2013-10-16 154 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