Skip to content
チュートリアル
Python
Python KNN: sklearnを使ったK最近傍回帰のマスター

Python KNN: sklearnを使ったK最近傍回帰のマスター

機械学習の世界において、特に人気が高いアルゴリズムの1つがK最近傍法(KNN)アルゴリズムです。回帰問題に適用する場合、このアルゴリズムはKNN回帰と呼ばれます。今日は、Pythonのsklearnを使ったKNN回帰の実装方法について探ってみましょう。特に、KNeighborsRegressorクラスに焦点を当てます。

Python Pandas Dataframeを使ったデータ可視化を簡単に実現したいですか?

PyGWalkerは、Pythonのライブラリで、可視化と一緒にデータ分析を簡単に実行することができます。PyGWalker (opens in a new tab) は、pandas dataframeやpolars dataframeをTableauスタイルのユーザーインターフェースに変換して、データのビジュアル探索をすることができます。

PyGWalkerによるデータ可視化 (opens in a new tab)

KNN回帰とは?

K最近傍回帰 (KNN回帰) とは、予測問題に使用されるパラメーターが非存在型の方法です。 KNNは、似たような入力値は似たような出力値を生み出すという前提に基づいています。回帰のコンテキストでは、KNNは指定された数(K)の最も近いデータポイント(近傍)を取り、その値を平均して予測します。

sklearn KNN回帰

Scikit-learn、またはSklearn は、機械学習のための広く使用されているPythonライブラリです。 多くの人気アルゴリズムの簡単に使用可能な実行システムを提供しており、KNN回帰も例外ではありません。 Sklearnでは、KNN回帰はKNeighborsRegressorクラスを使って実装されています。

KNeighborsRegressorを使用するには、まず次のようにインポートします。

from sklearn.neighbors import KNeighborsRegressor

次に、引数として希望する近傍数を指定してクラスのインスタンスを作成します。

knn_regressor = KNeighborsRegressor(n_neighbors=3)

最後に、モデルをデータに適合させて予測を行います。

knn_regressor.fit(X_train, y_train)
predictions = knn_regressor.predict(X_test)

sklearn KNN回帰モデルの調整

Sklearnを使用してKNNを実行する上で重要なことは、適切な近傍数(K)を選ぶことです。 近傍数が少なすぎると過学習になり、多すぎると適合不足になります。 異なるKの値を試して結果を比較することが良いアイデアです。

for k in range(1, 10):
    knn_regressor = KNeighborsRegressor(n_neighbors=k)
    knn_regressor.fit(X_train, y_train)
    print(f'Score for k={k}: {knn_regressor.score(X_test, y_test)}')

これにより、各Kの値の精度スコアが出力され、最良の近傍数を選択することができます。### Sklearn KNN回帰の実践

それでは、sklearnを使用したPythonにおけるKNN回帰の具体的な例を見ていきましょう。ここでは、回帰問題によく使われるBoston Housingデータセットを使用します。

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
 
# データセットの読み込み
boston = load_boston()
X = boston.data
y = boston.target
 
# データセットをトレーニングセットとテストセットに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
 
# KNN回帰を適用
knn_regressor = KNeighborsRegressor(n_neighbors=3)
knn_regressor.fit(X_train, y_train)
predictions = knn_regressor.predict(X_test)
 
# モデルの評価
print('Score:', knn_regressor.score(X_test, y_test))

score()メソッドによって、予測の決定係数R^2を取得できます。

結論

データサイエンティストにとって、KNN回帰を理解し、sklearnのKNeighborsRegressorを使用して実装することは貴重なスキルです。この強力なツールを活用することで、ネイバーベースの学習の力を利用して、データに正確な予測を行うことができます。

ここでは基本的なことを紹介しましたが、sklearnやKNN回帰にはまだまだ探索すべきことがあります。楽しんで実験を行い、隣人たちが常に正しい予測へと導いてくれることを願っています!