使用以前保存的mod获取测试数据的分类精度

2024-06-16 11:44:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Orange数据挖掘工具编写一个python脚本,以使用先前保存的模型(pickle文件)对测试数据进行分类。在

dataFile = "training.csv" 
data = Orange.data.Table(dataFile);
learner = Orange.classification.RandomForestLearner()
cf = learner(data)
#save the pickle file
with open("1.pkcls", "wb") as f:
    pickle.dump(cf, f)

#load the pickle file
with open("1.pkcls", "rb") as f:
    loadCF = pickle.load(f)
testFile = "testing.csv" 
test = Orange.data.Table(testFile);

learners = [1]
learners[0] = cf
result = Orange.evaluation.testing.TestOnTestData(data,test,learners)
# get classification accuracy
CAs = Orange.evaluation.CA(result)

我可以成功地保存和加载模型,但我有一个错误

^{pr2}$

我找到了一种方法来解决这个问题,并通过删除成功地生成分类精度

cf = learner(data)

但是,如果我删除这行代码,我就不能训练模型并保存它,因为RandomForestLearner在保存和加载模型的代码之前没有基于输入文件训练模型。在

with open("1.pkcls", "wb") as f:
pickle.dump(cf, f)

#load the pickle file
with open("1.pkcls", "rb") as f:
loadCF = pickle.load(f)

有人知道是否可以先训练一个模型并将其保存为pickle文件吗。然后我可以用它来测试另一个文件以获得分类的准确性?在


Tags: 文件the模型dataaswith分类load
1条回答
网友
1楼 · 发布于 2024-06-16 11:44:19

在将分类器传递给TestOnTestData(它的名称应该是TrainOnTrainAndTestOnTestData,即它自己调用fitting/training步骤)之前,不能预先训练它。在

不幸的是,没有现成的显式方法从测试数据集上预先训练的分类器的应用程序创建Result实例。在

一种快速而肮脏的方法是重击传递给TestOnTest数据的“学习者”返回预先训练的模型

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

相关问题 更多 >