開始使用免費開始

最佳化 n_neighbors

現在資料已經完成縮放處理,可以嘗試使用 KNN 模型。為了讓效能最佳化,我們應該調整模型的超參數。對於 k-nearest neighbors 演算法,只有一個超參數: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
編輯並執行程式碼