交叉验证

sklearn中

train_test_split将训练数据的一部分留出来做校验,不参与模型参数训练
– 优点:速度快
– 缺点:训练数据减少,一次校验集的划分会带来随机性

交叉验证(corss-valisation, CV),但训练时间延长
– 适合训练数据规模较大的情况(如上百万条记录)
– 适合训练慢的机器学习模型

k-折交叉验证:将训练数据等分成k份(k通常的取值为3、5或10)
– 重复k次每次留出一份做校验,其余k-1份做训练
– k次校验集上的平均性能视为模型在测试集上性能的估计,该估计比train_test_split得到的估计方差更小

from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score #对给定参数的单个模型评估
kfold = KFold(n_splits=10, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print("Accuracy: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))

• 注意:如果每类样本不均衡或类别数较多,采用StratifiedKFold(有些类别少,有些类别多,不会每一份都属于同一个类别), 将数据集中每一类样本的数据等分.

通常 k-折交叉验证是评估机器学习模型的黄金准则(k=3, 5, 10)
• 当类别数目较多,或者每类样本数目不均衡时,采用stratified交
叉验证
• 当训练数据集很大, train/test split带来的模型性能估计偏差很
小,或者模型训练很慢时,采用train/test split
• 对给定问题找到一种技术,速度快且能得到合理的性能估计
• 如果有疑问,对回归问题,采用10-fold cross-validation ; 对分类, 采用stratified 10-fold cross-validation

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值