交叉验证
交叉检验()是一种常用的模型选择方法。
如果给你的样本数据充足,模型选择的一种简单方法是将随机数据切分为训练集()、验证集()、测试集()。训练集用来训练模型、验证集用于模型选择、测试集对最终的模型进行评估。
但实际应用中数据是不充足的。此时,可以采用交叉验证法。思想是:重复的使用数据,把给定的数据进行切分,将切分的数据集组合为训练集与测试集,在此基础上反复进行训练,测试以及模型选择。
根据切分方法的不同,交叉验证分为三种:
① 简单交叉验证
首先随机地将数据分为两部分,一部分作为训练集,另一部分作为测试集(例如, 的数据作为训练集, 的数据作为测试集);然后用训练集在各种条件下训练模型,从而得到不同的模型;在测试集上评价各个模型的测试误差,选出测试误差最小的模型。
② 折交叉验证
首先随机地将数据切分为 个互不相交、大小相同的子集;
然后利用 个子集的数据训练模型,余下的子集测试模型,这一过程会得得到 个模型;
最后选出 次中误差最小的模型,或平均 次结果,或其他结合方式。
③ 留一交叉验证
折交叉验证的特殊情形,,称为留一交叉验证()。这里 是数据集的容量。对于 个样本,每次选择 个样本作训练集, 个样本作测试集。
三种交叉验证的选择:只是对数据做一个初步的模型建立,不做深入分析,简单交叉验证就可以。否则用 折交叉验证。当数据集很少的时候(),使用留一交叉验证。
④ 自助法
还有一种比较特殊的交叉验证方法,也是用于数据集很少的时候()。叫自助法。即有放回的抽样法,采集跟训练集个数 相同的样本。这 个样本做训练集,没在训练集出现的样本做测试集。这样的测试结果,也叫“包外估计”。
在 次采样中没被采集到的概率:
对 取极限:
也就是初始训练集约有 的样本在采样集中, 没被采集。
函数:
sklearn.cross_validation.cross_val_score(estimator, X, y=None, scoring=None, cv=None,n_jobs=1, verbose=0, fit_params=None, pre_dispatch='2*n_jobs')
返回值:
交叉验证每次运行的评分数组。
参数:
estimator
:数据对象。比如:分类器名称。。
X
:数据。
y
:预测数据。
scoring
:调用方法。
- :准确率。
- : 值,只用于二分类。
- :精度,只用于二分类。
- :召回率,只用于二分类。
- :平衡精度。
cv
:如果是 值,表示几折交叉验证;也可以是一个迭代策略生成器,指定不同的 方法。
n_jobs
: 个数( 表示全部)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)