绘制学习曲线
当我们想为某个超参数测试很多不同的取值时,直接用 DataFrame 展示会不太直观。此前您学过一个很实用的分析技巧:使用"学习曲线"来直观展示调整某个超参数的增减对最终结果的影响。
这一次,您将不只测试少量学习率,而是测试很多取值,以便在更大的范围内观察该超参数的影响。NumPy 中有个有用的函数 np.linspace(start, end, num),可以在您指定的区间(start、end)内,均匀生成给定数量(num)的取值。
您将可以使用数据集 X_train、X_test、y_train 和 y_test。
本练习是课程的一部分
Python 中的超参数调优
练习说明
- 创建一个包含 30 个学习率的列表,这些取值在 0.01 到 2 之间均匀分布。
- 按照上一道练习的思路编写循环,但这次只将准确率分数保存到列表中。
- 绘制学习率与准确率之间的关系图。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Set the learning rates & accuracies list
learn_rates = np.linspace(____, ____, num=____)
accuracies = []
# Create the for loop
for learn_rate in learn_rates:
# Create the model, predictions & save the accuracies as before
model = GradientBoostingClassifier(learning_rate=____)
predictions = model.fit(____, ____).predict(____)
accuracies.append(accuracy_score(y_test, ____))
# Plot results
plt.plot(____, ____)
plt.gca().set(xlabel='learning_rate', ylabel='Accuracy', title='Accuracy for different learning_rates')
plt.____