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