Python
機械学習
Jupyter
NucoDay 14

【リベンジ】KNN(K近傍法)を実装してみた

Nuco Advent Calendar 14日目の記事です。

前回の記事を書いた翌日、数人の方から「おい、何だよあの記事ww」と言われました。
今回はリベンジです。

KNN?

特徴空間における最も近い訓練例に基づいた分類の手法であり、パターン認識でよく使われる。

分類手法の一つですが、こちらの記事が分かりやすかったです。

ソースコード

こちらです。jupyter使いました。

分類データ

今回は以下のようなアヤメのデータセットを使いました。
データ数が150件だったので、30件をテストデータとしました。

萼片の長さ 萼片の幅 花弁の長さ 花弁の幅 アヤメの種類
  5.4 3.7  1.5 0.2 setosa
  5.7 2.6  3.5 1 versicolor
  6.9 3.2  5.7 2.3 virginica

パラメータから分類できそうか確認

final.png

プロットした結果から、petal(花弁)の長さと幅にしました。
左上です。

k=8の場合

accuracy 0.97でした
actual: virginica, predict: versicolor, result: 外れました

k=1の場合(最近傍法)

accuracy 0.93でした
actual: virginica, predict: versicolor, result: 外れました

まとめ

データセットが少ないですが、よく成長したversicolorと、あまり成長していないvirginicaは見分けにくいということが分かりました。