[機械学習]k-最近傍法アルゴリズムとは[Python]
こんにちは。kakeです。
今回はプログラミングについての記事です。
pythonで機械学習を以下の教材を利用して勉強しているのですが、備忘録としてk-最近傍法についてまとめていこうと思います。(間違っているところがもしあれば、ご連絡ください!)
リンク
[機械学習]k-最近傍法アルゴリズムとは[Python]
![[機械学習]k-最近傍法アルゴリズムとは[Python]](https://kakerunoblog.com/wp-content/uploads/2019/09/binary-2904980_1920-1024x575.jpg)
機械学習では様々なアルゴリズムがありますが、今回はk-最近傍法というものです。
その中でも今回はクラス分類について書いていきます。
k-最近傍法
k-最近傍法というのは調べたいデータ(テストデータ)の近いk個の訓練データからクラスを分類する方法です。
文章で見てもちょっとよくわからないと思うので、実際に図で見てましょう。

上のコードは
mglearn.plots.plot_knn_classification(n_neighbors=1)

上のコードは
mglearn.plots.plot_knn_classification(n_neighbors=5)
図で見るとわかりやすいと思うのですが、☆マークがこれから分類したいデータになります。そして、そのデータに近い訓練データをk個とって、クラス0かクラス1かを決めます。
この時、k個とったデータのうち、多数派となるクラスをテストデータ(☆)に割り当てるようになっています。
scikit-learnを用いて適用してみる
流れとしては以下の通りです。
- データを訓練データとテストデータに分割
- k-最近傍法を用いて学習させる
- scoreメソッドで精度を調べる
使うデータはforgeデータです。またkの値は3として行います。
import mglearn from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier X, y = mglearn.datasets.make_forge() #データを分割する X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0) clf = KNeighborsClassifier(n_neighbors=3) clf.fit(X_train, y_train) clf.score(X_test, y_test)
上記のコードでjupyter-notebookで行うと、以下のようにスコアが出ます!

見ての通り出力は0.857…なので、精度としては約86%ということになりました。
k-最近傍法には今回行ったクラス分類以外の回帰にも利用ができる。
考え方は基本的に同じなので、ここでは省略します。
人気記事 [無料あり]Python・AI(人工知能)を学習するためのプログラミングスクール3選