更新:2024/12/08
【scikit-learn】k近傍法(k-NN)の使い方と意味について


はるか
k近傍法って、知ってる?

ふゅか
うん!新しいデータがどのグループに属するかを予測するアルゴリズムよね。シンプルだけど効果的!

はるか
そう、分類アルゴリズムの一つ。近いデータを見ることがポイント。
目次
1. k近傍法
1.1. k近傍法(k-NN)とは?
k近傍法(k-Nearest Neighbors, k-NN)は、機械学習のアルゴリズムの一つです。このアルゴリズムは、「新しいデータがどのクラスに属するか」を分類されたデータを基に予測します。
1.2. アルゴリズムの流れ
- 訓練データを用意します(ラベル付きのデータ)。
- 距離が近いデータ(「近傍」と呼びます)をk個選びます。このkは、事前に設定する整数値が用いられます。
- k個の近傍の中で、最も多いカテゴリ(ラベル)をデータの分類結果とします。
例えば、k=5のとき、真ん中の白い点のラベルをk近傍法を利用して推測します。
この場合、距離が近いデータ点はそれぞれ
青:1個、赤:1個、緑:3個
となるので、多数決で緑がラベルとして推測されます。

ふゅか
例えば、k=5なら、近くにいる5つのデータを見るんだよね。その中で、一番多いグループを新しいデータのラベルにするの!

はるか
多数決の仕組み。緑が3個で一番多い。だから、緑になる。
2. Scikit-learnでの実装
Scikit-learnはPythonで使用される機械学習ライブラリで、k-NNを簡単に実装できます。以下は基本的な流れです。
2.1. 必要なライブラリをインポート
2.2. データの準備
ここでは有名なtoyデータセットであるIrisデータセットを使用します。このデータセットには、アヤメの品種(Setosa, Versicolor, Virginica)の特徴データが含まれています。
2.3. モデルの構築と訓練
Scikit-learnでは、KNeighborsClassifier
クラスを使用します。ここでkの値(近傍数)を指定します。
2.4. テストデータでの予測
訓練が終わったら、テストデータに対して予測を行います。
3. 距離の計算方法
metricを指定することで、データ間の距離を計算する方法を指定できます(デフォルトはユークリッド距離)。
マンハッタン距離を利用すると、

はるか
デフォルトはユークリッド距離。

ふゅか
だけど、データに応じてマンハッタン距離や他の方法も使えるんだよね!