优化 n_neighbors
既然我们已经对数据做了缩放,就可以尝试使用 KNN 模型了。为获得更好的性能,应该调优模型的超参数。对于 k-近邻算法,我们只有一个超参数:n,即邻居数量。创建 KNeighborsRegressor 模型时设置该超参数。邻居数量对应的参数名是 n_neighbors。
我们希望尝试一组取值,能够覆盖最佳性能附近的设置。通常从 2 个邻居开始,然后逐步增加,直到评分指标开始下降。这里我们将使用测试集(scaled_test_features 和 test_targets)上 .score() 方法得到的 R\(^2\) 值来优化 n。我们将根据测试集得分来确定最佳的 n。
本练习是课程的一部分
Python 金融机器学习
练习说明
- 遍历
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