Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ KNeighborsClassifier(K近傍法分類器) | モデリング
/
Pythonによる機械学習入門

bookKNeighborsClassifier(K近傍法分類器)

メニューを表示するにはスワイプしてください

パイプラインで最終的な推定器を作成する際、選択されたモデルはKNeighborsClassifierです。本章では、このアルゴリズムの動作について簡単に説明します。

Note
Note

モデルの仕組みは本コースの主要なトピックではないため、内容が不明瞭でも問題ありません。より詳細な説明は、 Linear Regression with Python Classification with Python などの他のコースで解説されています。

k-Nearest Neighbors

k-NNは、新しいインスタンスのクラスを、そのインスタンスに最も類似したk個の訓練サンプルを参照して予測します。 KNeighborsClassifierはこれをScikit-learnで実装しています。

  1. 新しいデータポイントに対して、特徴量の類似度を用いてk個の最近傍を見つけます。
  2. その中で最も多いクラスが予測結果となります。

kハイパーパラメータ(デフォルト=5)です。値を変えることでモデルの挙動が変化するため、kの調整が重要です。

.fit() 時の KNeighborsClassifier

多くのアルゴリズムとは異なり、KNeighborsClassifier は単に訓練データを保存します。 それでも、モデルが予測時に参照するデータセットを認識するために .fit(X, y) の呼び出しが必要です。

.predict() 時の KNeighborsClassifier

予測時、分類器は各インスタンスのk 個の最も近い近傍を探索します。 視覚的な例では 2 つの特徴量のみが表示されていますが、特徴量を追加することで通常はクラスの分離や予測精度が向上します。

Note
注記

上記の GIF では、'body_mass_g''culmen_depth_mm' の 2 つの特徴量のみが使用されています。これは高次元のプロットを視覚化するのが難しいためです。追加の特徴量を含めることで、モデルは緑と赤のデータポイントをより良く分離できるようになり、KNeighborsClassifier による予測精度が向上します。

KNeighborsClassifier コーディング例

分類器の作成、学習、および .score() を使用した精度の確認が可能。 n_neighbors 引数は k を制御—51 の両方を試すことが推奨。

12345678910111213
import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
copy

k=1 を使用すると完全な精度が得られる場合があるが、これは訓練データで評価しているため誤解を招く結果となる。 真の性能を測定するには、必ず未知のデータでモデルをテストすることが重要。

question mark

KNeighborsClassifier は新しいインスタンスに対してどのように予測を行いますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  2
some-alt