簡體   English   中英

如何使用保存的來自 Orange GUI 的 RandomForest 模型進行預測

[英]How to make predictions using a saved RandomForest model from Orange GUI

我使用了 Orange GUI 並訓練了一個 RandomForest 模型,后來我使用 SaveModel 小部件保存了該模型。

Orange用pickle保存它的模型,因此我去寫了以下python腳本:

import Orange, pickle

model = pickle.load(open('model', 'rb'))

問題是,我昨天在網上廣泛搜索。 並且找不到任何示例來對我的數據(與我在 Orange GUI 中使用的數據格式相同)或有關如何使用該模型的足夠文檔進行預測。

經過后來的研究,我發現我應該可以評估一個預先訓練的模型,該模型沒有使用以下代碼進行處理

results = Orange.evaluation.testing.TestOnTestData(data, test, [lambda testdata: model])

問題是加載我應該做的數據:

data = Orange.data.Table('trainingData.csv');
test = Orange.data.Table('testData.csv');

而且我一直無法找到有關如何區分這些*.csv文件中的目標和功能的文檔。

即使我能夠創建這些文件,也可以從這一點開始。 我將不得不做一些噱頭,其中testData.csv只需要一行(我想預測的行),目標值為 1。我將通過檢查分數是否為100%來查看模型預測的內容或0%

所以我知道我的問題很多,但我真的可以在以下幾點上使用一些幫助:

  1. 如何在*.csv文件中定義Orange.data.Table()函數的特征中的目標是什么
  2. 如何使用腌制的 Orange RandomForest 模型進行預測,而不是使用噱頭的評估進行預測。 (這樣我就可以一次預測多個項目..)

非常感謝您的寶貴時間

因此,在 Orange GitHub 上提出同樣的問題后,我設法找到了合適的答案。

對於 csv 文件格式,上面有一個文檔頁面,它解釋了如何在數據集中定義什么是特征以及什么是目標:

關於加載數據的文檔

至於模型,它非常簡單。 該模型是一個用於進行預測的python對象,因此一旦我將要預測的數據按照文檔中的上述格式進行了預測,我就可以通過調用進行預測

pred_ind = model(data)
[model.domain.class_var.str_val(i) for i in pred_ind]  # convert to value names (strings)

如果我想查看百分比,我需要做的就是

prob = model(data, model.Probs) 

但更好的是:

正如你在上面的例子中看到的,模型存儲了它訓練的域。 這意味着您實際上甚至不需要為 1 煩惱。當模型獲得要預測的數據時,它會首先將其轉換為訓練的域,並使用與目標和獨立特征相同的變量(顯然他們需要存在於數據中)。

如果有人想在 github 上找到原始答案,那就是: GitHub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM