はじめに
sklearnの
でk近傍法によるクラス分類をすることができる。ここではneighbors
.KNeighborsClassifiersklearn.datasets.make_blobs
で作成したデータに対してクラス分類を行った例について説明する。
解説
モジュールのインポートなど
バージョン
データの生成
make_blobsによりデータを作成する。make_blobsについては下記記事で解説した。
cluster_std=.5とし、ばらつきの小さいデータ群を作成した。
訓練用、テスト用データの分離
train_test_splitにより、データを訓練用とテスト用に分ける。訓練用をX_train, Y_trainとし、テスト用をX_test, Y_testとする。100こあるデータはtrain:test=75:25の比で分離される。
データの表示
訓練用データの表示
テスト用データの表示
k近傍法の適用
n_neighborsは近傍点として扱うデータ数の数を指定する。
neighbors.KNeighborsClassifierで分類器を作成し、clf.fit(X_train, Y_train)により訓練用データを分類器に学習させる。
clf.predict(X_test)で分類器による予測をテストデータに対して行う。
予測の正解率は1.0なので全て正しく分類されていることになる。
結果の表示
訓練用データの緑の点の近くにテスト用のオレンジのデータがあり、赤の訓練用データのところに紫のテスト用データがあることが確認できる。
データのばらつきが大きい場合
データの作成
cluster_std=2.0としてばらつきの大きいデータを作成する。訓練用データをテスト用データは以下のようになる。
k近傍法の適用
近傍点はさっきと同じ3として、分類した。
分類の結果をプロットすると以下のようになる。
不正解なデータ点の確認
scoreは0.92なので間違っているデータ数は2ことなる。
違うところのインデックスはnp.whereでわかる。
正解データを予測データの右隣にプロットすると下記のようになる。予測が元データと異なる部分が2箇所あることがわかる。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)
コメント