最近Pythonで遊んでおります。
ってことで今回は、K近傍法のサンプルプログラムを書いてみました。
環境
- JupyterLab
僕はDocker環境を利用しています。
参考記事
インストールは不要!!はーーいっ!! Anacondaとかをホストには入れたくないので、Dockerで使えるようにします。 最終的にDockerさえあれば、他ツールのインストールは一切不要です。 ということで今回は、Docke[…]
ソースコード
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近傍法による実行結果
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 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検定受けてるんですけど、ようやく勉強した内容を使う時が来ました。
ってことで、ここから他のモデルもどんどん使ってサンプルプログラムを増やしていきたいと思います。
さいなら。