2016-10-01 62 views
1

我正在從Python中的scikit-learn庫中使用KNeighborsClassifier算法。我遵循了基本的說明將我的數據和標籤分成訓練和測試數據,然後在訓練數據上訓練我的模型。現在我正試圖預測測試數據的準確性,但是會出現錯誤。這是我的代碼:KNeighborsClassifier .predict()函數不起作用

from sklearn.neighbors import KNeighborsClassifier 
from sklearn.cross_validation import train_test_split 
from sklearn.metrics import accuracy_score 

data_train, data_test, label_train, label_test = train_test_split(df, labels, 
                   test_size=0.2, 
                   random_state=7) 
mod = KNeighborsClassifier(n_neighbors=4) 
mod.fit(data_train, label_train) 
predictions = mod.predict(data_test) 

print accuracy_score(label_train, predictions) 

錯誤我得到:

ValueError: Found arrays with inconsistent numbers of samples: [140 558] 

140的訓練數據的所述部分和558是基於所述test_size測試數據= 0.2(我的數據組是698個樣本)。我驗證了標籤和數據集的大小是698,但是,我得到這個基本上試圖比較測試數據和訓練數據集的錯誤。

有沒有人知道這裏有什麼問題?我應該使用什麼來訓練我的模型和我應該用什麼來預測分數?

謝謝!

回答

2

您應該計算accuracy_scorelabel_test,不label_train。您希望將測試集的實際標籤label_test與您的模型的預測predictions進行比較。

+0

謝謝@Igaud!它確實有用!現在,當我在查看文檔時,它很明顯。我碰巧遇到了教程中所犯的錯誤。 – semenoff

1
+0

謝謝你的建議!我嘗試用以下代碼重塑我的數據: 'label_train = np.reshape(label_train,(len(label_train),1))' 'label_test = np.reshape(label_test,(len(label_test),1)) '' 打印label_train.shape' '打印data_train.shape' '打印data_test.shape' '打印label_test.shape' 這裏是我得到的結果: '(558:1)'' ( 558,2)'' (140,2)'' (140,1)' 並且仍然相同的錯誤: 'ValueError異常:實測值陣列與樣品的不一致數:[140 558]' – semenoff