![](/img/trans.png)
[英]How to load a model saved as RDS file from Python and make predictions?
[英]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%
所以我知道我的問題很多,但我真的可以在以下幾點上使用一些幫助:
*.csv
文件中定義Orange.data.Table()
函數的特征中的目標是什么非常感謝您的寶貴時間
因此,在 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.