JPC*_*JPC 5 python classification machine-learning scikit-learn
我正在建立一个模型clf说
clf = MultinomialNB()
clf.fit(x_train, y_train)
Run Code Online (Sandbox Code Playgroud)
然后我想用分数来看我的模型准确性
clf.score(x_train, y_train)
Run Code Online (Sandbox Code Playgroud)
结果是0.92
我的目标是测试我所使用的测试
clf.score(x_test, y_test)
Run Code Online (Sandbox Code Playgroud)
我得到了这个0.77,所以我认为它会给我与下面这段代码相同的结果
clf.fit(X_train, y_train).score(X_test, y_test)
Run Code Online (Sandbox Code Playgroud)
我得到了0.54.有人可以帮我理解为什么会这样0.77 > 0.54吗?
你必须得到同样的结果x_train,y_train,x_test和y_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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10867 次 |
| 最近记录: |