技術共有

近接性の秘密を探る: SKlearn での K 最近傍 (KNN) アルゴリズムの適用

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

近接性の秘密を探る: SKlearn での K 最近傍 (KNN) アルゴリズムの適用

機械学習の世界では、K 最近傍 (KNN) アルゴリズムはそのシンプルさと直観性で知られています。 KNN は基本的な分類および回帰手法であり、その動作原理は非常に理解しやすいものです。異なる特徴値間の距離を測定することで、新しいデータ ポイントがどのカテゴリまたは値に属するかを予測します。 Scikit-learn (略して sklearn) は、Python で広く使用されている機械学習ライブラリとして、KNN アルゴリズムの実装を提供します。この記事では、sklearn で KNN アルゴリズムを使用する方法を詳しく紹介し、実用的なコード例を示します。

1. K 最近傍アルゴリズムの基本原理

K 最近傍アルゴリズムの中心的な考え方は、特徴空間内のサンプルの K 最近傍のほとんどが特定のカテゴリに属している場合、サンプルもこのカテゴリに属する​​可能性が高いということです。

2. K 最近傍アルゴリズムの重要な要素
  • K値の選択: K の選択は、モデルのパフォーマンスに重要な影響を与えます。
  • 距離測定: KNN アルゴリズムでは、ユークリッド距離、マンハッタン距離など、さまざまな距離測定方法を使用できます。
  • 重み関数: 近隣ノードには、距離に基づいた相互の重み付けなど、異なる重み付けを割り当てることができます。
3. sklearnでKNNを使用した分類

sklearn を使用した KNN 分類の基本的な手順は次のとおりです。

3.1 KNN 分類器のインポート
from sklearn.neighbors import KNeighborsClassifier
  • 1
3.2 データの準備

すでにデータセットがあるとします。Xは特性行列、yはターゲット変数です。

from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
  • 1
  • 2
3.3 KNN 分類子インスタンスの作成
knn = KNeighborsClassifier(n_neighbors=3)
  • 1
3.4 トレーニングモデル

データセットを使用して KNN モデルをトレーニングします。

knn.fit(X, y)
  • 1
3.5 予測を行う

トレーニングされたモデルを使用して予測を行います。

y_pred = knn.predict(X)
  • 1
4. sklearn での回帰に KNN を使用する

KNN は回帰タスクにも使用できます。

4.1 KNN リグレッサーのインポート
from sklearn.neighbors import KNeighborsRegressor
  • 1
4.2 KNN リグレッサー インスタンスの作成
knn_reg = KNeighborsRegressor(n_neighbors=3)
  • 1
4.3 トレーニングモデル

データセットを使用して、KNN 回帰モデルをトレーニングします。

knn_reg.fit(X, y)
  • 1
4.4 予測を行う

トレーニングされたモデルを回帰予測に使用します。

y_pred_reg = knn_reg.predict(X)
  • 1
5. K 最近傍アルゴリズムの長所と短所
  • アドバンテージ:アルゴリズムがシンプルで分かりやすく、データの分散を前提としないため、データへの適応力が高い。
  • 欠点がある: 計算が非常に複雑になり、特に大規模なデータセットでは外れ値の影響を受けやすくなります。
6 結論

K 最近傍アルゴリズムは、分類タスクや回帰タスクに適したシンプルかつ強力な機械学習手法です。 sklearn は使いやすい KNN 実装を提供し、このアルゴリズムを実際の問題に迅速に適用できるようにします。

この記事では、sklearn で KNN アルゴリズムを使用する方法を詳しく説明し、実用的なコード例を示します。この記事が、読者が K 最近傍アルゴリズムをよりよく理解し、sklearn でこれらの手法を実装する方法を習得するのに役立つことを願っています。データ量が増加し続け、機械学習テクノロジーが発展するにつれて、K 最近傍アルゴリズムはデータ分析と予測モデリングにおいて重要な役割を果たし続けるでしょう。