最近Pythonで遊んでおります。
ってことで今回は、K近傍法のサンプルプログラムを書いてみました。
僕のプロフィールはこちら
環境
・JupyterLab
僕はDocker環境を利用しています。
ソースコード
■GitHub
URL:「https://github.com/izumin0401/docker-anaconda/blob/master/k_nearest_neighbor_algorithm.ipynb」
K近傍法とは
他サイトにいっぱい情報があるので割愛します。
K近傍法のサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn import metrics from sklearn.metrics import accuracy_score, confusion_matrix, classification_report # アイリスデータをロードする iris = load_iris() # 学習用データ、予測用データ、学習用教師データ、予測用教師データを「学習:8、予測:2」の割合で割り当てる (train_X, test_X, train_Y, test_Y) = train_test_split(iris.data, iris.target, test_size=0.2) # K近傍法用インスタンス生成 model = KNeighborsClassifier() # 学習モデル生成 model.fit(train_X, iris.target_names[train_Y]) # K近傍法による予測を行う pred = model.predict(test_X) # 精度を計算する score = accuracy_score(iris.target_names[test_Y], pred) # 結果を出力する print('score:%s' % score) print(classification_report(iris.target_names[test_Y], pred)) print(confusion_matrix(iris.target_names[test_Y], pred)) |
K近傍法のサンプルプログラムです。
※データはアイリスデータを使用しています。
K近傍法による実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
score:1.0 precision recall f1-score support setosa 1.00 1.00 1.00 15 versicolor 1.00 1.00 1.00 5 virginica 1.00 1.00 1.00 10 accuracy 1.00 30 macro avg 1.00 1.00 1.00 30 weighted avg 1.00 1.00 1.00 30 [[15 0 0] [ 0 5 0] [ 0 0 10]] |
今回は精度「1.0」なので全問正解ですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
score:0.9666666666666667 precision recall f1-score support setosa 1.00 1.00 1.00 6 versicolor 0.94 1.00 0.97 15 virginica 1.00 0.89 0.94 9 accuracy 0.97 30 macro avg 0.98 0.96 0.97 30 weighted avg 0.97 0.97 0.97 30 [[ 6 0 0] [ 0 15 0] [ 0 1 8]] |
2回目は「0.9666…」なので、96%正解といった感じですね。
以上!!
おすすめ本
これおすすめやで。
まとめ
僕だいぶ前にG検定受けてるんですけど、ようやく勉強した内容を使う時が来ました。
ってことで、ここから他のモデルもどんどん使ってサンプルプログラムを増やしていきたいと思います。
さいなら。
関連記事
以下の記事も合わせて読まれています。