加载的模型与保存的模型相比收到不同的预测

时间:2019-07-03 22:01:50

标签: python scikit-learn svm google-colaboratory joblib

我正在尝试保存模型并将其加载到其他会话中,但是我遇到了预测不一致的问题,我将不胜感激。所以这就是我所做的...

首先,在运行模型之后,我使用以下代码保存了模型:

from sklearn.externals import joblib
joblib.dump(clf, "models.pkl")

然后将文件加载到其他分类笔记本中,我使用了功能

from sklearn.externals import joblib
loaded_model = joblib.load('models.pkl')

然后使用我用来处理单个图像进行测试的程序

img_toArray = cv2.imread("/content/ESD/ESD/folder1/img1.png")
new_array = cv2.resize(img_toArray, (220, 220))
new_array = np.array(new_array).reshape(1,145200)

但是这会导致我测试的每个图像都输出array([4]),我不确定为什么。

我还尝试过重新加载整个数据集,并从要素(图像)中分离标签,并使用train_test_split将90%的数据集专用于测试,并在运行要素(图像)进行测试时使用,通过代码块:

loaded_model.predict(np.array(xTest[whatEverNumber]).reshape(1,145200))

我得到正确的预测。因此,我对我做错了什么感到困惑,因为在两个示例中,我都以基本上相同的方法处理图像,然后分离图像并通过相同的预测方法运行它们。因此,如果能找出我做错了什么,我将不胜感激。

可能证明是有益的其他信息:我正在使用colaboratory,而我的模型是一个sklearn SVM,它通过cross_validation_predict,cross_validation_predict和最后一个SVM拟合函数运行。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

WHERE [X_DATE] IN ('2019-06-25', '2019-06-24') AND [MSGID] IN (8016, 11, 3072, 23, 3062) AND [SEVERITY] <> 'Medium' 是否始终使用相同的数据进行训练?您可能会遇到此问题,因为您的拟合模型是用数据集的不同块(折叠)训练的,并且您仅使用最后一次迭代拟合/保存它,因此,每次测试时,模型都会从不同数据中学习(给定并返回不同的预测。如果模型拟合在您的交叉验证循环中,则为。我可以问一下,您使用了哪种类型的火车试车票?洗了吗?