[機械学習]k-最近傍法アルゴリズムとは[Python]

Python プログラミング

こんにちは。kakeです。

今回はプログラミングについての記事です。

pythonで機械学習を以下の教材を利用して勉強しているのですが、備忘録としてk-最近傍法についてまとめていこうと思います。(間違っているところがもしあれば、ご連絡ください!)

[機械学習]k-最近傍法アルゴリズムとは[Python]

[機械学習]k-最近傍法アルゴリズムとは[Python]

機械学習では様々なアルゴリズムがありますが、今回はk-最近傍法というものです。

その中でも今回はクラス分類について書いていきます。

k-最近傍法

k-最近傍法というのは調べたいデータ(テストデータ)の近いk個の訓練データからクラスを分類する方法です。

文章で見てもちょっとよくわからないと思うので、実際に図で見てましょう。

k=1の時

上のコードは

mglearn.plots.plot_knn_classification(n_neighbors=1)
k=5の時

上のコードは

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選