KNeighborsClassifier
メニューを表示するにはスワイプしてください
パイプラインで最終推定器を作成する際に選択されたモデルはKNeighborsClassifierです。本章では、このアルゴリズムの動作について簡単に説明します。
モデルの仕組みは本コースの主要なトピックではないため、内容が不明瞭でも問題ありません。詳細は他のコース(Linear Regression with Python や Classification with Python など)で解説されています。
k-近傍法
k-NNは、新しいインスタンスのクラスを、そのk個の最も類似した訓練サンプルを参照して予測します。
KNeighborsClassifierはこれをScikit-learnで実装しています。
- 新しいデータポイントに対して、特徴量の類似度を用いてk個の最近傍を見つけます。
- その中で最も多いクラスが予測結果となります。
kはハイパーパラメータ(デフォルト=5)です。値を変えることでモデルの挙動が変化するため、kの調整が重要です。
.fit()時のKNeighborsClassifier
多くのアルゴリズムとは異なり、KNeighborsClassifierは単に訓練データを保存する。
それでも、モデルが予測時に参照するデータセットを認識するために.fit(X, y)の呼び出しが必要。
.predict()時のKNeighborsClassifier
予測時、分類器は各インスタンスのk個の最も近い近傍を探索する。 図の例では2つの特徴量のみが表示されているが、特徴量を増やすことで通常はクラスの分離性や予測精度が向上する。
上記のGIFでは、視覚化が難しいため、2つの特徴量 'body_mass_g' と 'culmen_depth_mm' のみを使用。追加の特徴量を含めることで、モデルが緑と赤のデータポイントをより良く分離できるようになり、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つを試してチャットを始めてください