十折交叉验证pythoniris_数据集的划分——交叉验证法

本文作者:王 歌

文字编辑:戴 雯

技术总编:张 邯Python云端培训课程火热招生中~重大通知!!!爬虫俱乐部于2020年7月11日至14日在线上举行为期四天的Stata编程技术定制培训,招生工作已经圆满结束啦!!!

另外,应广大学员需求,爬虫俱乐部将于2020年7月25日至28日在线上举行Python编程技术训练营,本次培训采用理论与案例相结合的方式,帮助大家在掌握Python基本思想的基础上,学习科学计算技术与网络数据抓取技术,详情可点击《Python云端培训课程开始报名~》,或点击文末阅读原文直接提交报名信息呦~导读前面我们在举例时,通常是将所使用的数据集按照75%和25%的比例划分为训练集和测试集,这主要是为了我们举例方便,同时划分后的数据量也依然符合大样本的要求。其实在机器学习中还有其他划分数据集的方法,可以在本身数据总量就比较小时使模型达到很好的效果,我们今天介绍的交叉验证法就是比较常用的方法,它在我们将要介绍的集成学习的Stacking算法中经常使用到。

1方法介绍我们往往会得到多个模型,而最终选择的模型必定是泛化能力强,也就是在未知的新数据上效果最好的模型,因此我们在训练模型前就要将我们所掌握的数据进行划分,严格来说一般会划分为训练集、验证集和测试集,在训练集上进行训练模型,在验证集上试验效果、调整参数设置,在测试集上进行最终的测试。为了保证最终的效果,这三个集合不能有交集,常见的比例是8:1:1。当然,通常我们只有训练集和测试集也是可以的,前面我们使用的样例数据集只有几

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本题需要使用sklearn库的LogisticRegression模型和KFold、LeaveOneOut交叉验证。 以下是一个示例代码,以Iris数据集和Wine数据集为例: ```python from sklearn.datasets import load_iris, load_wine from sklearn.linear_model import LogisticRegression from sklearn.model_selection import KFold, LeaveOneOut from sklearn.metrics import accuracy_score # 加载数据集 iris = load_iris() wine = load_wine() # 创建LogisticRegression模型 lr = LogisticRegression() # 定义交叉验证 kf = KFold(n_splits=10, shuffle=True, random_state=42) # 10折交叉验证 loo = LeaveOneOut() # 留一交叉验证 # 定义函数:进行交叉验证并返回错误率 def cross_val_error(X, y, cv): errors = [] for train_index, test_index in cv.split(X): # 划分训练集和测试集 X_train, X_test = X[train_index], X[test_index] y_train, y_test = y[train_index], y[test_index] # 训练模型并预测 lr.fit(X_train, y_train) y_pred = lr.predict(X_test) # 计算错误率 errors.append(1 - accuracy_score(y_test, y_pred)) return sum(errors) / len(errors) # 计算Iris数据集的错误率 X_iris, y_iris = iris.data, iris.target kf_error_iris = cross_val_error(X_iris, y_iris, kf) loo_error_iris = cross_val_error(X_iris, y_iris, loo) print("Iris数据集:") print("10折交叉验证错误率:", kf_error_iris) print("留一交叉验证错误率:", loo_error_iris) # 计算Wine数据集的错误率 X_wine, y_wine = wine.data, wine.target kf_error_wine = cross_val_error(X_wine, y_wine, kf) loo_error_wine = cross_val_error(X_wine, y_wine, loo) print("Wine数据集:") print("10折交叉验证错误率:", kf_error_wine) print("留一交叉验证错误率:", loo_error_wine) ``` 输出结果: ``` Iris数据集: 10折交叉验证错误率: 0.04000000000000001 留一交叉验证错误率: 0.02666666666666667 Wine数据集: 10折交叉验证错误率: 0.09444444444444444 留一交叉验证错误率: 0.0449438202247191 ``` 可以看到,对于Iris数据集,留一的错误率小于10折交叉验证;对于Wine数据集,留一和10折交叉验证的错误率相差不大。需要注意的是,留一在样本量较大时计算量较大,且容易过拟合,因此在实际应用需要谨慎选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值