我正在尝试保存模型并将其加载到其他会话中,但是我遇到了预测不一致的问题,我将不胜感激。所以这就是我所做的...
首先,在运行模型之后,我使用以下代码保存了模型:
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拟合函数运行。
提前谢谢!
答案 0 :(得分:0)
WHERE [X_DATE] IN ('2019-06-25', '2019-06-24')
AND [MSGID] IN (8016, 11, 3072, 23, 3062)
AND [SEVERITY] <> 'Medium'
是否始终使用相同的数据进行训练?您可能会遇到此问题,因为您的拟合模型是用数据集的不同块(折叠)训练的,并且您仅使用最后一次迭代拟合/保存它,因此,每次测试时,模型都会从不同数据中学习(给定并返回不同的预测。如果模型拟合在您的交叉验证循环中,则为。我可以问一下,您使用了哪种类型的火车试车票?洗了吗?