训练集、测试集的划分——K折交叉验证

本文介绍了训练集和测试集的概念及其作用,强调了测试集在评估模型泛化能力上的局限性。接着详细阐述了交叉验证法的目的、原理和具体步骤,特别是K折交叉验证,它通过多次训练和测试,平均误差来评估模型的性能,通常选择k=10。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、训练集、测试集

训练集(Training Set):帮助我们训练模型,简单的说就是通过训练集的数据让我们确定拟合曲线的参数。
测试集(Test Set): 为了测试已经训练好的模型的精确度,评估模最终模型的泛化能力。

当然,测试集并不能保证模型的正确性,他只是说相似的数据用此模型会得出相似的结果。因为我们在训练模型的时候,参数全是根据现有训练集里的数据进行修正、拟合,有可能会出现过拟合的情况,即这个参数仅对训练集里的数据拟合比较准确,这个时候再有一个数据需要利用模型预测结果,准确率可能就会很差。

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、交叉验证法

1.目的

交叉验证法的作用就是尝试利用不同的训练集/验证集划分来对模型做多组不同的训练/验证,来应对单独测试结果过于片面以及训练数据不足的问题。(就像通过多次考试,才能知道哪些学生是比较比较牛B的)

2.原理

交叉验证是将数据集D划分为k个大小相等的互斥子集,即D=D1∪D2∪…∪Dk,Di∩Dj=∅(i≠j) 。
然后每次取其中的一份作为测试集,另外的k-1份用作训练集,这样就可以获得k组训练/测试集,从而可以进行k次训练和测试,最终返回的是k个测试结果的均值。然后求得error的平均值作为最终的评价,具体算法流程如下:
在这里插入图片描述

3.具体步骤

1.<

### 训练集、验证集和测试集划分的比例最佳实践 在机器学习项目中,合理地划分训练集、验证集和测试集对于构建具有良好泛化能力的模型至关重要。以下是关于如何选择合适的比例以及一些常见实践。 #### 常见的数据集划分比例 一般情况下,数据集可以按照以下几种常见的比例进行划分: - **70%-15%-15%**:这种划分方式适用于中小型数据集,在实际应用中较为广泛[^1]。 - **80%-10%-10%** 或 **60%-20%-20%**:这些比例也可以根据具体需求调整,尤其是当数据量较大时[^4]。 需要注意的是,具体的划分比例应取决于以下几个因素: - 数据总量:如果数据较少,则可能需要减少验证集或测试集的比例以保留更多用于训练的数据[^3]。 - 模型复杂度:复杂的模型通常需要更多的训练数据来避免过拟合。 - 跨领域迁移情况:如果是跨领域的任务,可能还需要额外考虑目标域数据分布的影响[^1]。 #### 特殊场景下的处理方法 除了简单的固定比例划分外,还有一些特殊的技术可以帮助优化这一过程: - **K交叉验证 (K-Fold Cross Validation)**:通过将整个数据集分成 K 份并轮流使用其中一份作为验证集的方式,能够更充分地利用有限的数据资源[^3]。 - **留一法 (Leave-One-Out, LOO)**:特别适合于极小规模的数据集,尽管其计算开销较高[^3]。 #### 避免偏差方差问题 无论采用何种策略,都需注意防止因不当分配而导致的潜在问题,如过拟合或欠拟合现象的发生[^4]。合理的划分不仅有助于评估模型的真实表现,还能指导后续改进方向。 ```python from sklearn.model_selection import train_test_split # 示例代码展示如何按指定比例拆分数据集 X_train_val, X_test, y_train_val, y_test = train_test_split(X, y, test_size=0.2, random_state=42) X_train, X_val, y_train, y_val = train_test_split(X_train_val, y_train_val, test_size=0.15/(0.8), random_state=42) print(f"Train size: {len(y_train)}, Val size: {len(y_val)}, Test size: {len(y_test)}") ``` 以上代码片段展示了基于 Scikit-Learn 的 `train_test_split` 函数实现标准三步走——先分离出测试集再进一步细分为训练集和验证集的过程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值