评估方法与CrossValidation交叉验证

评估方法

关键:怎么获得“测试集”(test set) ?

测试集应该与训练集“互斥”

常见方法:

  • 留出法 (hold-out)
  • 交叉验证法 (cross validation)
  • 自助法 (bootstrap)

留出法

这里写图片描述

这里写图片描述

注意:

保持数据分布一致性 (例如: 分层采样)

多次重复划分 (例如: 100次随机划分)

测试集不能太大、不能太小 (例如:1/5~1/3)


k-折交叉验证法

这里写图片描述


自助法

这里写图片描述
这里写图片描述


sklearn.cross_validation模块

cross validation大概的意思是:对于原始数据我们要将其一部分分为traindata,一部分分为test data。train data用于训练,test data用于测试准确率。在test data上测试的结果叫做validation error。将一个算法作用于一个原始数据,我们不可能只做出随机的划分一次train和testdata,然后得到一个validation error,就作为衡量这个算法好坏的标准。因为这样存在偶然性。我们必须多次的随机的划分train data和test data,分别在其上面算出各自的validation error。这样就有一组validationerror,根据这一组validationerror,就可以较好的准确的衡量算法的好坏。crossvalidation是在数据量有限的情况下的非常好的一个evaluate performance的方法。而对原始数据划分出train data和testdata的方法有很多种,这也就造成了cross validation的方法有很多种。

kFold

classsklearn.model_selection.KFold(n_splits=3,shuffle=False, random_state=None)

参数:

n_splits : 默认3,最小为2;K折验证的K值

shuffle : 默认False;shuffle会对数据产生随机搅动(洗牌)

random_state :默认None,随机种子

方法:

get_n_splits([X, y, groups])        Returnsthe number of splitting iterations in the cross-validator

split(X[, y, groups])        Generateindices to split data into training and test set.

>>> import numpy as np
>>>
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值