sklearn的交叉验证是机器学习中重要的一步,主要用来评估模型的误差,但是其中理解起来还是有点困难,尤其是cv的设置,如果过大就会报错。
网上有关于交叉验证的基础知识点,我就不介绍了,我主要从实践中说下关于交叉验证在分类器中应用的一些坑和难以理解的地方。
首先是交叉验证会不会改变模型参数?
不会。交叉验证是在model.fit()之后进行的一步,模型在fit的时候,就已经更新了参数,交叉验证只是为了在数据集上评估模型好坏用的,通过交叉验证来计算AUC,f1,precision,recall等指标。
交叉验证包括 cross_val_predict,cross_val_score,cross_val。
其中predict是输出预测值,score是可选的,可以选择一些指标去展示分数。
对于回归来说,可以选择score,但是对于分类器,还是需要使用predict。
例如:
Y_forest_pred = cross_val_predict(forest_clf, X_train, y_train_binary, cv = 10)
# Y_forest_pred.shape=(49, )
cv是可选的参数,cv也是最难理解的地方。
cv表示k折交叉,默认是cv=5(假如不设置cv参数)。
注意:如果estimators(估算器模型)是分类器,并且y是二类或多类,那么cv使用的是StratifiedKFold,如果不是分类器,那么就是KFold。
StratifiedKFold使用的是分层

本文详细探讨了sklearn中交叉验证的困惑点,包括模型参数不变性、cv设置的注意事项、StratifiedKFold在分类任务中的应用,以及如何避免留一法错误。通过实例说明了cv最大值的确定方法,适合初学者理解和实践分类器的交叉验证技巧。
最低0.47元/天 解锁文章
905

被折叠的 条评论
为什么被折叠?



