在你的情况下,是的。 因为你没有保存(酸洗) tfidfVectorizer 。 必须以与列车数据转换完全相同的方式转换测试数据,以提供任何有意义的预测。 所以,如果你不想一次又一次地读取火车数据,那就腌制了 tfidfVectorizer 以及一些估算器,并在测试过程中将其取消。
tfidfVectorizer
你也可以看一下 的 管道 强> 提供scikit-学习将数据预处理和估算结合到一个对象中,您可以轻松地进行腌制和取消,而无需担心酸洗和加载培训的各个部分
的 编辑 - 添加代码 强>
在第一次进行培训时,最后将此行添加到您的代码中:
joblib.dump(vectorizer, 'pickl/train_vectorizer.pkl',1)
现在在测试数据时,无需加载训练数据。只需加载已安装的矢量图:
classifier_rbf = joblib.load('pickl/train_rbf_SVM.pkl') vectorizer = joblib.load('pickl/train_vectorizer.pkl') test_vectors = vectorizer.transform(test_data) prediction_rbf = classifier_rbf.predict(test_vectors)