- cross validation的目的:进行调参
注意: cross validation的目的不是训练神经网络 - 如何做(以最简单的为例)
|1. 划分trainning set,test set, test set 不要动(仅用于最后评估参数)
|2. 设置grid:选择多组参数,接下来对每组参数重复以下步骤
|>>>>2.1. 把trainning set分成5份, 重复5次以下步骤
|>>>>>>>2.1.1. 拿出一份作为validation set,其他4份做trainning set
|>>>>>>>2.1.3. 在trainning set上进行训练
|>>>>>>>2.1.3. 保存validation set的表现结果
|>>>>>>>2.1.4. 训练结束后清除神经网络的权重
|>>>>2.2. 以保存的5次validation set的表现的平均值作为验证集的表现
|3. 选取表现最好的一组参数
|4. 用这5份数据和表现最好的参数训练神经网络 - cross validation的优点
对小的数据集来说,可以重复利用数据(不会浪费validation set) - 变体
nest loop: 对第一次划分也进行cross validation
优点:数据很小的时候,划分的test set太小不够有代表性
5: 代码
for train, test in kf.split(data_x, data_y):
model=LogisticRegression(max_iter=300)
clf=GridSearchCV(model,param_grid=params_dict,scoring='f1',cv=5)
clf.fit(data_x[train], data_y[train])
6: 参考
Link
Link