我正在使用 sklearn 训练分类器,但我做错了。在下面的代码中,我为训练和预测输入了完全相同的值,但结果并不相同。这是怎么发生的?
text_clf = Pipeline([('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', MultinomialNB()),
])
text_clf = text_clf.fit(X, y)
predicted = text_clf.predict(X)
print set(np.asarray(y)) == set(predicted) #gives false
数据 X 是 unicode 列表和 y 数字列表(1 和 0)。
最佳答案
一般来说,不会,两者不会相等。除非您使用仅收敛于 100% 训练准确率的方法,否则您将无法获得完美拟合。
在 ML 中强制 100% 准确度通常会导致过度拟合,导致模型非常适合训练集,以至于它在任何后续(例如现实世界) ) 输入。
如果您要求 100% 的准确性,那么机器学习对于您的问题来说是完全错误的范例。您需要确定性分类,而不是自适应启发式。
关于python - 分类器对相同数据的拟合和预测给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43262467/