我使用了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
文件中的目标和功能的文档。
即使我能够创建此文件,Appart也是如此。我将不得不做一些头,其中testData.csv
仅需要长一行(我要预测的行),目标值为1。然后,我将通过检查分数是否为零来查看模型预测的结果100%
或0%
所以我知道我的问题很多,但我真的可以在以下重点上使用一些帮助:
*.csv
文件中定义Orange.data.Table()
函数功能的目标是什么非常感谢您的光临
答案 0 :(得分:1)
因此,在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