Tối ưu n_neighbors
Giờ dữ liệu đã được scale, bạn có thể thử dùng mô hình KNN. Để tối đa hóa hiệu năng, chúng ta nên tinh chỉnh các siêu tham số của mô hình. Với thuật toán k-nearest neighbors, ta chỉ có một siêu tham số: n, số lượng láng giềng. Ta đặt siêu tham số này khi tạo mô hình với KNeighborsRegressor. Tham số cho số láng giềng là n_neighbors.
Chúng ta muốn thử một dải giá trị đi qua thiết lập có hiệu năng tốt nhất. Thông thường ta sẽ bắt đầu với 2 láng giềng và tăng dần cho đến khi chỉ số đánh giá bắt đầu giảm. Ở đây, ta sẽ dùng giá trị R\(^2\) từ phương thức .score() trên tập test (scaled_test_features và test_targets) để tối ưu n. Ta sẽ dùng điểm số trên tập test để xác định n tốt nhất.
Bài tập này là một phần của khóa học
Machine Learning cho Tài chính bằng Python
Hướng dẫn bài tập
- Lặp qua các giá trị từ 2 đến 12 cho
nvà đặt giá trị này làmn_neighborstrong mô hìnhknn. - Fit mô hình với dữ liệu huấn luyện (
scaled_train_featuresvàtrain_targets). - In ra các giá trị R\(^2\) bằng phương thức
.score()của mô hìnhknncho cả tập train và test, và ghi nhận điểm tốt nhất trên tập test.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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