Scikit Learn clf.fit / score 模型准确度

6
我正在构建一个模型,命名为“clf”。
clf = MultinomialNB()
clf.fit(x_train, y_train)

然后我想使用score查看我的模型准确性。

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吗?

1个回答

7
如果x_trainy_trainx_testy_test在两种情况下都相同,则必须获得相同的结果。以下是使用鸢尾花数据集的示例,可以看到两种方法都获得了相同的结果。
>>> 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

我想可能是我的查询语句有问题,因为数据量太大了。很奇怪。谢谢你的确认。我会再试一次。 - JPC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接