交叉验证
一般只将70%和30%分为训练集和测试集的方法称为简单交叉验证,而另一种K折交叉验证是指将数据分为K份,轮流以其中K-1份作为训练,另一份作为测试集,取平均的泛化误差最小的模型,具体为:
clf = KNeighborsClassifier() >>> from sklearn.model_selection import cross_val_score >>> cross_val_score(clf, X, y, cv=5)
或者可以利用cv = ShuffleSplit(n_splits = 5)再将CV传入将会返回含有5个泛化误差的列表。
使用交叉验证进行超参数优化
对于正则化的线性模型,有岭回归(L2正则)和Lasso回归(L1正则),使用时
from sklearn.linear_model import Ridge, Lassomodel = Ridge()//使用默认的alpha参数,也可以提供alpha值
cross_val_score(model, X, y).mean()得到交叉验证的平均泛化误差。
当我们提供了一系列的alpha值时,可以利用GridSearchCV函数自动寻找最优的alpha值:
from sklearn.grid_search import GridSearchCV
gscv = GridSearchCV(Model(), dict(alpha=alphas), cv=3).fit(X, y)
scikit-learn也提供内嵌CV的模型,如
from sklearn.linear_model import RidgeCV, LassoCV
model = RidgeCV(alphas=alphas,