分类器拟合和预测在相同的数据上给出不同的结果

时间:2017-04-06 17:54:39

标签: python machine-learning scikit-learn

我正在使用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)的列表。

1 个答案:

答案 0 :(得分:3)

一般来说,不,两者不相等。除非你使用的方法仅仅收敛于100%的训练精度,否则你将得到不完美的拟合。

强制ML的100%准确性通常会导致过度拟合,导致模型特别适合训练集,以至于它在任何后期都会产生令人无法接受的糟糕表现(例如真实世界) )输入。

如果要求 100%准确度,那么机器学习对于您的问题来说完全是错误的范例。您需要确定性分类,而不是自适应启发式。