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

交叉验证

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>

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

练习

接着使用上一个练习的管道(乳腺癌数据集)并进行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()

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

上一篇:Pset_RampFlightCommon


下一篇:educoder---Java入门-数组基础