机器学习中的模型验证、特征工程与优化
1. 模型验证与学习曲线
1.1 交叉验证与最优模型
在模型验证过程中,找到最优模型有时并不需要计算训练分数,但研究训练分数和验证分数之间的关系,能让我们深入了解模型的性能。例如,通过以下代码绘制测试数据的图形:
plot(X_test.ravel(), y_test);
plt.axis(lim);
1.2 学习曲线的概念
模型的最优复杂度通常依赖于训练数据的规模。我们可以通过生成新的数据集来演示这一点,比如生成一个数据点数量是原来五倍的新数据集:
X2, y2 = make_data(200)
plt.scatter(X2.ravel(), y2);
接着,我们可以绘制该较大数据集的验证曲线,并与之前较小数据集的结果进行对比:
degree = np.arange(21)
train_score2, val_score2 = validation_curve(
PolynomialRegression(), X2, y2,
'polynomialfeatures__degree',
degree, cv=7)
plt.plot(degree, np.median(train_score2, 1), color='blue', label='training score')
plt.plot(