2013-10-16 127 views
3

我建立一个模型clfscikit学习clf.fit /评分模型的准确性

clf = MultinomialNB() 
clf.fit(x_train, y_train) 

然后我想看看我的使用模型的准确度得分

clf.score(x_train, y_train) 

结果为0.92

我的目标是针对测试进行测试,因此我使用

clf.score(x_test, y_test) 

这一次我得到了0.77,所以我想它会给我的结果与此相同的代码如下

clf.fit(X_train, y_train).score(X_test, y_test) 

这我0.54。有人可以帮我理解为什么会0.77 > 0.54

回答

6

如果在两种情况下x_trainy_trainx_testy_test都相同,您必须得到相同的结果。这里是一个使用iris数据集的例子,你可以看到两种方法都得到相同的结果。

>>> from sklearn.naive_bayes import MultinomialNB 
>>> from sklearn.cross_validation import train_test_split 
>>> from sklearn.datasets import load_iris 
>>> from copy import copy 
# prepare dataset 
>>> iris = load_iris() 
>>> X = iris.data[:, :2] 
>>> y = iris.target 
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) 
# model 
>>> clf1 = MultinomialNB() 
>>> clf2 = MultinomialNB() 
>>> print id(clf1), id(clf2) # two different instances 
4337289232 4337289296 
>>> clf1.fit(X_train, y_train) 
>>> print clf1.score(X_test, y_test) 
0.633333333333 
>>> print clf2.fit(X_train, y_train).score(X_test, y_test) 
0.633333333333 
+0

这就是我的想法,我可能在我的查询中有一个错误,因为数据是如此之大。奇怪。感谢您的确认。我会再尝试。 – JPC

+1

你是对的。这完全是我的数据集中的一个错误 – JPC

+1

这似乎是你的数据的一个错误,谢谢你的确认:) – jabaldonedo