Bắt đầu ngayBắt đầu miễn phí

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_featurestest_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

Xem khóa học

Hướng dẫn bài tập

  • Lặp qua các giá trị từ 2 đến 12 cho n và đặt giá trị này làm n_neighbors trong mô hình knn.
  • Fit mô hình với dữ liệu huấn luyện (scaled_train_featurestrain_targets).
  • In ra các giá trị R\(^2\) bằng phương thức .score() của mô hình knn cho 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
Chỉnh sửa và Chạy Mã