开始使用免费开始使用

优化 n_neighbors

既然我们已经对数据做了缩放,就可以尝试使用 KNN 模型了。为获得更好的性能,应该调优模型的超参数。对于 k-近邻算法,我们只有一个超参数:n,即邻居数量。创建 KNeighborsRegressor 模型时设置该超参数。邻居数量对应的参数名是 n_neighbors

我们希望尝试一组取值,能够覆盖最佳性能附近的设置。通常从 2 个邻居开始,然后逐步增加,直到评分指标开始下降。这里我们将使用测试集(scaled_test_featurestest_targets)上 .score() 方法得到的 R\(^2\) 值来优化 n。我们将根据测试集得分来确定最佳的 n

本练习是课程的一部分

Python 金融机器学习

查看课程

练习说明

  • 遍历 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
编辑并运行代码