2016-10-01 17 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) 

Iを取得エラー:

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

140は、トレーニングデータの一部であり、558はtest_size = 0.2に基づいてテストデータである(私のデータセットは698個のサンプルであります)。ラベルとデータセットのサイズが同じであることを確認しました。しかし、このエラーは、基本的にテストデータとトレーニングデータセットを比較しようとしています。

ここで何が間違っているのですか?どのように私のモデルを訓練するために使用する必要がありますと私はスコアを予測するために使用する必要がありますか?

ありがとうございます!

答えて

2

あなたはlabel_testaccuracy_score、ないlabel_trainを計算する必要があります。テストセットの実際のラベルlabel_testを、テストセットのモデルpredictionsの予測と比較したいとします。

+0

@Igaudありがとうございました!それはうまくいった!今私はドキュメントを見ているとき、それは一種のものです。私はチュートリアルで行われた間違いに従うことがあります。 – semenoff

1

次の質問で問題を解決しようとしましたか?

sklearn: Found arrays with inconsistent numbers of samples when calling LinearRegression.fit()

+0

ありがとうございました! 'label_train = np.reshape(label_train、(len(label_train)、1))' 'label_test = np.reshape(label_test、(len(label_test)、1))次のコードでデータを再構成しようとしました。 ( '(558、1)' ':' ' 印刷label_train.shape' は' ' ここ '印刷label_test.shape' data_test.shape'印刷するには、私は結果を得るものですdata_train.shape'印刷します558、2) '' (140、2) '' (140、1) ' そして、まだ同じエラー: 'とValueError:サンプルの一貫性のない番号を発見配列:[140 558]' – semenoff

関連する問題