n_neighbors の最適化
データのスケーリングが完了したので、KNN モデルを試してみましょう。モデルの性能を最大化するには、ハイパーパラメータを調整する必要があります。k近傍法(KNN)のハイパーパラメータは1つだけです。それが、近傍点の数を表す n です。このハイパーパラメータは、KNeighborsRegressor でモデルを作成する際に設定します。近傍点の数を指定する引数は n_neighbors です。
最適な性能が得られる設定を見つけるため、さまざまな値を試してみましょう。通常は近傍点数2から始め、スコアが下がり始めるまで増やしていきます。ここでは、テストセット(scaled_test_features と test_targets)に対する .score() メソッドのR$^2$値を使って n を最適化します。テストセットのスコアをもとに、最適な n を決定しましょう。
この演習はコースの一部です
Python による金融のための Machine Learning
演習の手順
nの値を2から12までループし、knnモデルのn_neighborsに設定します。- 訓練データ(
scaled_train_featuresとtrain_targets)を使ってモデルを学習させます。 knnモデルの.score()メソッドを使って、訓練セットとテストセットのR$^2$値を出力し、テストセットで最も高いスコアを確認しましょう。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
from sklearn.neighbors import KNeighborsRegressor
for n in range(____):
# Create and fit the KNN model
knn = KNeighborsRegressor(n_neighbors=____)
# Fit the model to the training data
knn.fit(____, ____)
# Print number of neighbors and the score to find the best value of n
print("n_neighbors =", n)
print('train, test scores')
print(knn.score(scaled_train_features, train_targets))
print(knn.score(____, ____))
print() # prints a blank line