5

私は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?

4

1 に答える 1

6

x_trainy_trainx_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
于 2013-10-16T18:02:37.140 に答える