scikit 学习 clf.fit / 评分模型准确性

Posted

技术标签:

【中文标题】scikit 学习 clf.fit / 评分模型准确性【英文标题】:scikit learn clf.fit / score model accuracy 【发布时间】:2013-10-24 21:36:33 【问题描述】:

我正在建立一个模型clf

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

【问题讨论】:

【参考方案1】:

如果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

【讨论】:

这就是我的想法,我的查询中可能有错误,因为数据太大了。奇怪的。感谢您的确认。我会再试一次。

以上是关于scikit 学习 clf.fit / 评分模型准确性的主要内容,如果未能解决你的问题,请参考以下文章

使用 scikit-learn 重新拟合 SVM

sklearn评分函数的参数是什么?

scikit-learn 入门练习

将 clf.fit 与 csv 中的 numpy 数组一起使用

H2O 和 Scikit-Learn 指标评分之间有啥区别?

将 scikit-learn (sklearn) 预测添加到 pandas 数据帧