Sklearn Cross-validation 3
交叉验证(cross validation)让我们知道在机器学习中验证是有多么的重要, 这一次的 sklearn 中我们用到了sklearn.learning_curve
当中的另外一种, 叫做validation_curve
,用这一种曲线我们就能更加直观看出改变模型中的参数的时候有没有过拟合(overfitting)的问题了. 这也是可以让我们更好的选择参数的方法.
validation_curve 检视过拟合
验证SVC
中的一个参数 gamma
在什么范围内能使 model
产生好的结果. 以及过拟合和 gamma
取值的关系.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 from sklearn.learning_curve import validation_curve from sklearn.datasets import load_digits from sklearn.svm import SVC import matplotlib.pyplot as plt import numpy as npdigits = load_digits() X = digits.data y = digits.target param_range = np.logspace(-6 , -2.3 , 5 ) train_loss, test_loss = validation_curve( SVC(), X, y, param_name='gamma' , param_range=param_range, cv=10 , scoring='mean_squared_error' ) train_loss_mean = -np.mean(train_loss, axis=1 ) test_loss_mean = -np.mean(test_loss, axis=1 ) plt.plot(param_range, train_loss_mean, 'o-' , color="r" , label="Training" ) plt.plot(param_range, test_loss_mean, 'o-' , color="g" , label="Cross-validation" ) plt.xlabel("gamma" ) plt.ylabel("Loss" ) plt.legend(loc="best" ) plt.show()
由图中可以明显看到 gamma
值大于 0.001
,模型就会有过拟合(Overfitting
)的问题。
Reference
Checking if Disqus is accessible...