KNeighborsClassifier(K近傍法分類器)
メニューを表示するにはスワイプしてください
パイプラインで最終的な推定器を作成する際、選択されたモデルはKNeighborsClassifierです。本章では、このアルゴリズムの動作について簡単に説明します。
モデルの仕組みは本コースの主要なトピックではないため、内容が不明瞭でも問題ありません。より詳細な説明は、 Linear Regression with Python や Classification with Python などの他のコースで解説されています。
k-Nearest Neighbors
k-NNは、新しいインスタンスのクラスを、そのインスタンスに最も類似したk個の訓練サンプルを参照して予測します。
KNeighborsClassifierはこれをScikit-learnで実装しています。
- 新しいデータポイントに対して、特徴量の類似度を用いてk個の最近傍を見つけます。
- その中で最も多いクラスが予測結果となります。
kはハイパーパラメータ(デフォルト=5)です。値を変えることでモデルの挙動が変化するため、kの調整が重要です。
.fit() 時の KNeighborsClassifier
多くのアルゴリズムとは異なり、KNeighborsClassifier は単に訓練データを保存します。
それでも、モデルが予測時に参照するデータセットを認識するために .fit(X, y) の呼び出しが必要です。
.predict() 時の KNeighborsClassifier
予測時、分類器は各インスタンスのk 個の最も近い近傍を探索します。 視覚的な例では 2 つの特徴量のみが表示されていますが、特徴量を追加することで通常はクラスの分離や予測精度が向上します。
上記の GIF では、'body_mass_g' と 'culmen_depth_mm' の 2 つの特徴量のみが使用されています。これは高次元のプロットを視覚化するのが難しいためです。追加の特徴量を含めることで、モデルは緑と赤のデータポイントをより良く分離できるようになり、KNeighborsClassifier による予測精度が向上します。
KNeighborsClassifier コーディング例
分類器の作成、学習、および .score() を使用した精度の確認が可能。
n_neighbors 引数は k を制御—5 と 1 の両方を試すことが推奨。
12345678910111213import 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))
k=1 を使用すると完全な精度が得られる場合があるが、これは訓練データで評価しているため誤解を招く結果となる。
真の性能を測定するには、必ず未知のデータでモデルをテストすることが重要。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください