【机器学习】k-fold cross validation(k-折叠交叉验证)

本文深入解析了交叉验证的基本概念及其在模型选择中的关键作用。介绍了k-折叠交叉验证的具体步骤,通过将数据集分为训练集和验证集,评估模型的泛化能力,最终选出最优模型。

交叉验证的目的:在实际训练中,模型通常对训练数据好,但是对训练数据之外的数据拟合程度差。用于评价模型的泛化能力,从而进行模型选择。

交叉验证的基本思想:把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对模型进行训练,再利用验证集来测试模型的泛化误差。另外,现实中数据总是有限的,为了对数据形成重用,从而提出k-折叠交叉验证。

对于个分类或回归问题,假设可选的模型为。k-折叠交叉验证就是将训练集的1/k作为测试集,每个模型训练k次,测试k次,错误率为k次的平均,最终选择平均率最小的模型Mi。

1、 将全部训练集S分成k个不相交的子集,假设S中的训练样例个数为m,那么每一个子集有m/k个训练样例,相应的子集称作{}。

2、 每次从模型集合M中拿出来一个,然后在训练子集中选择出k-1个

{}(也就是每次只留下一个),使用这k-1个子集训练后,得到假设函数。最后使用剩下的一份作测试,得到经验错误。

3、 由于我们每次留下一个(j从1到k),因此会得到k个经验错误,那么对于一个,它的经验错误是这k个经验错误的平均。

4、 选出平均经验错误率最小的,然后使用全部的S再做一次训练,得到最后的。
--------------------- 
作者:evillist 
来源:优快云 
原文:https://blog.youkuaiyun.com/evillist/article/details/61912827 
版权声明:本文为博主原创文章,转载请附上博文链接!

在Python中,使用sklearn库进行3交叉验证(3-Fold Cross Validation)是一个常见的机器学习模型评估过程。下面是一个简单的示例,展示如何使用`KFold`函数实现这个过程: ```python # 首先,假设我们有一个数据集 `df`,特征列名为 'X',目标变量列名为 'y' from sklearn.model_selection import train_test_split, KFold from sklearn.linear_model import LogisticRegression # 数据预处理,分割训练集测试集(这里假设80%的数据用于训练,20%用于测试) X_train, X_test, y_train, y_test = train_test_split(df['X'], df['y'], test_size=0.2, random_state=42) # 创建KFold实例,这里是3交叉验证 kfold = KFold(n_splits=3, shuffle=True, random_state=42) # 对每个训练集进行独立的学习验证 for train_index, val_index in kfold.split(X_train): # 训练集验证集 X_train_fold, X_val_fold = X_train[train_index], X_train[val_index] y_train_fold, y_val_fold = y_train[train_index], y_train[val_index] # 创建并拟合模型(这里以逻辑回归为例) model = LogisticRegression() model.fit(X_train_fold, y_train_fold) # 在验证集上进行评估,例如计算准确率 predictions = model.predict(X_val_fold) accuracy = accuracy_score(y_val_fold, predictions) print(f"Validation fold accuracy: {accuracy}") # 最终,你可以选择所有折叠的平均精度作为模型性能指标 average_accuracy = sum(accuracy) / len(accuracy) print(f"Average 3-fold CV accuracy: {average_accuracy}") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值