机器学习1:scikit-learn简介(3)—— 交叉验证

本文介绍了如何在机器学习中使用scikit-learn进行K折交叉验证,包括步骤详解、预处理数据和实际操作示例,通过乳腺癌数据集演示了如何运用cross_validate函数进行3折交叉验证以评估模型性能。
摘要由CSDN通过智能技术生成

scikit-learn的介绍

一、机器学习的一般步骤

链接:机器学习的一般步骤

二、预处理数据

链接:预处理数据

三、交叉验证

K-折交叉验证

jupyter 将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的 平均数 作为此K-CV下分类器的性能指标。
scikit-learn提供了三个函数:
cross_val_scorecross_val_predictcross_validate

from sklearn.model_selection import cross_validate
pipe=make_pipeline(MinMaxScaler(),
                  LogisticRegression(solver='lbfgs', multi_class='auto',max_iter=1000, random_state=42))
# cv=3表示3折交叉验证
scores=cross_validate(pipe,digits.data,digits.target,cv=3,return_train_score=True)

使用交叉验证函数,我们可以快速检查训练和测试分数,并使用pandas快速绘图。

import pandas as pd
df_scores=pd.DataFrame(scores)
df_scores

输出:

	fit_time	score_time	test_score	train_score
0	0.128265	0.001		0.925249	0.988285
1	0.123709	0.000		0.943239	0.984975
2	0.115268	0.000		0.924497	0.993339

绘制箱型图

df_scores[['train_score', 'test_score']].boxplot()

输出:

<matplotlib.axes._subplots.AxesSubplot at 0x26ebac5fa58>

在这里插入图片描述

练习

接着使用上一个练习的管道(乳腺癌数据集)并进行3折交叉验证,而不是单个拆分评估。

pipe=make_pipeline(StandardScaler(),SGDClassifier(max_iter=1000))
scores=cross_validate(pipe,breast.data,breast.target,scoring='balanced_accuracy',cv=3,return_train_score=True)
df_scores=pd.DataFrame(scores)
df_scores[['train_score','test_score']].boxplot()

在这里插入图片描述
(完。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shi_jiaye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值