knaka Tech-Blog

AI, IoT, DIYエレクトロニクス, データサイエンスについて投稿予定です。

sklearnで、 k-NN(K-Nearest Neighbor Algorithm) 分類問題

index:

概要

機械学習で、k-NN を使用した。分類問題をテストしてみたいと
思います


環境

python 3.5.2
sklearn

コード

python3 です。
github.com

データセット

iris のデータ使用しました。

処理

KNeighborsClassifier を使用し、
学習、評価結果(score) を、リストに追加

list_nn = []
list_score = []
for k in range(1, 31): # K = 1~30
  # KNeighborsClassifier
  knc = KNeighborsClassifier(n_neighbors=k)
  knc.fit(X_train, Y_train)

  # 予測 
  Y_pred = knc.predict(X_test)
  #print("Y_pred=", Y_pred.shape)
  #print("Y_pred=", Y_pred[:10 ])

  # 評価 R^2
  score = knc.score(X_test, Y_test)
  print("[%d] score: {:.2f}".format(score) % k)

  list_nn.append(k)
  list_score.append(score)

結果

20回、過ぎると。過学習になるようです。
回数を、少なめにして調整した方が、よさそうです

データ数 = 150  特徴量 = 4
[1] score: 0.97
[2] score: 0.97
[3] score: 0.97
[4] score: 0.97
[5] score: 0.97
[6] score: 0.97
[7] score: 0.97
[8] score: 0.97
[9] score: 0.97
[10] score: 0.97
[11] score: 0.97
[12] score: 0.97
[13] score: 0.97
[14] score: 0.97
[15] score: 0.97
[16] score: 0.97
[17] score: 0.97
[18] score: 0.97
[19] score: 0.97
[20] score: 0.97
[21] score: 0.97
[22] score: 0.97
[23] score: 0.97
[24] score: 0.95
[25] score: 0.95
[26] score: 0.95
[27] score: 0.95
[28] score: 0.92
[29] score: 0.89
[30] score: 0.95