如何使用Orange GUI中保存的RandomForest模型进行预测

时间:2018-09-01 17:33:31

标签: python python-3.6 pickle random-forest orange

我使用了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%

所以我知道我的问题很多,但我真的可以在以下重点上使用一些帮助:

  1. 如何在*.csv文件中定义Orange.data.Table()函数功能的目标是什么
  2. 如何使用腌制的Orange RandomForest模型进行预测,而不是使用a头的评估进行预测。 (这样我就可以一次预测多个项目。)

非常感谢您的光临

1 个答案:

答案 0 :(得分:1)

因此,在Orange GitHub上问了同样的问题后,我设法找到了适当的答案。

对于csv文件格式,上面有一个文档页面,其中说明了如何在数据集中定义什么是功能以及什么是目标:

Documentation on Loading Data

关于模型,它非常简单。该模型是一个用于进行预测的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