|
|
一、交叉验证
https://scikit-learn.org/stable/modules/cross_validation.html
https://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter
1.1 自动进行交叉验证
cross_val_score
: 返回一维数组,记录每一折对应的单指标结果
|
|
cross_validate
: 返回一个字典,包括训练时间与计算指标两类结果。可以计算多个指标
|
|
-
关于
cv
参数(1)如果不指定,默认为5折交叉验证。对于分类任务,使用StratifiedKFold;对于回归任务,使用KFold。
(2)如果填写某一整数,则指定为K折交叉验证
(3)可以是sklearn交叉验证索引生成器,参考下面1.2 KFold示例
(4)自定义一个交叉验证索引迭代器, 参考下面1.2 KFold示例中的方式2
1.2 生成训练集与验证集索引
KFold
: 生成k折的互斥训练集与验证集索引
|
|
与上述自动交叉验证相结合,等价于自定义交叉验证方式。
在后面的超参数优化中,同样可以使用类似方式。
1 2 3 4 5 6
##方式1 cross_val_score(tree_classif, train_X, train_y, scoring="accuracy", cv=kf) ##方式2 cross_val_score(tree_classif, train_X, train_y, scoring="accuracy", cv=kf.split(train_X))
RepeatedKFold
: 重复多次生成k折的互斥训练集与验证集索引
|
|
StratifiedKFold
: 基于分层抽样原则,生成k折的互斥训练集与验证集索引
|
|
GroupKFold
:样本设计时已经分为若干组,在划分训练集与验证集时,确保同一组的样本位于同一类集合内。
|
|
二、超参数优化
https://scikit-learn.org/stable/modules/grid_search.html
2.1 网格搜索
GridSearchCV
网格/暴力搜索,遍历所有参数组合- 以字典形式设置超参数候选范围
cv
设置交叉验证,scoring
模型评价指标,可以有多个refit
设置是否使用最佳超参数直接拟合模型;默认为True;当有多个评价指标时,需指定其中一个为组合比较标准
|
|
2.2 随机搜索
RandomizedSearchCV
:除n_iter
参数设置随机搜索的次数外,其余参数与上述相同
|
|