始める無料で始める

n_neighbors の最適化

データのスケーリングが完了したので、KNN モデルを試してみましょう。モデルの性能を最大化するには、ハイパーパラメータを調整する必要があります。k近傍法(KNN)のハイパーパラメータは1つだけです。それが、近傍点の数を表す n です。このハイパーパラメータは、KNeighborsRegressor でモデルを作成する際に設定します。近傍点の数を指定する引数は n_neighbors です。

最適な性能が得られる設定を見つけるため、さまざまな値を試してみましょう。通常は近傍点数2から始め、スコアが下がり始めるまで増やしていきます。ここでは、テストセット(scaled_test_featurestest_targets)に対する .score() メソッドのR$^2$値を使って n を最適化します。テストセットのスコアをもとに、最適な n を決定しましょう。

この演習はコースの一部です

Python による金融のための Machine Learning

コースを見る

演習の手順

  • n の値を2から12までループし、knn モデルの n_neighbors に設定します。
  • 訓練データ(scaled_train_featurestrain_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
コードを編集して実行