sklearn 中 learning_curve 函数 的详细使用方法 (机器学习)

本文介绍了学习曲线的概念,展示了如何使用`learning_curve`函数进行模型评估。学习曲线通过绘制训练集和测试集分数,揭示模型在不同训练样本量下的表现,帮助识别过拟合或欠拟合问题。文章提供了使用随机森林分类器的例子,解释了关键参数,并给出了绘制学习曲线的代码示例。
摘要由CSDN通过智能技术生成

🌠 『精品学习专栏导航帖』


learning_curve函数的使用

1、✌ 原理

该函数是用来画学习曲线,可以直接返回训练样本、训练集分数、测试集分数
内部是根据交叉验证来获得分数的
学习曲线就是通过画出不同训练集大小时训练集和交叉验证的准确率,可以看到模型在新数据上的表现,进而来判断模型是否方差偏高或偏差过高,以及增大训练集是否可以减小过拟合。

2、✌ 函数形式

sklearn.model_selection.learning_curve(estimator, X, y, groups=None, train_sizes=array([0.1, 0.33, 0.55, 0.78, 1. ]), cv=’warn’, scoring=None, exploit_incremental_learning=False, n_jobs=None, pre_dispatch=’all’, verbose=0, shuffle=False, random_state=None, error_score=’raise-deprecating’)

3、✌ 重要参数

estimator:

需要传入模型对象,例如:RandomForestRegression()、SVC(gamma=0.001)

x:

需传入特征矩阵

y:

需传入标签

cv:

可以传多种格式参数:
(1)、整数:指定KFold中的折数,如cv=5,意为将x特征矩阵分为5份,最终分数也会有5份
(2)、None:默认为3折交叉验证
(3)、分割器:例如ShuffleSplit(n_splits=50,test_size=0.2,random_state=0)
即按照传入分割器进行分割

n_jobs:

需要同时运行的CPU数,如果是-1,则调用所有CPU进行计算

4、✌ 函数返回值

train_sizes_abs:

返回生成的训练的样本数,如[ 10 , 100 , 1000 ]

train_scores:

返回训练集分数,该矩阵为( len ( train_sizes_abs ) , cv分割数 )维的分数,
每行数据代表该样本数对应不同折的分数

test_scores:

同train_scores,只不过是这个对应的是测试集分数

5、✌ 代码示例

学习曲线就是通过画出不同训练集大小时训练集和交叉验证的准确率,可以看到模型在新数据上的表现,进而来判断模型是否方差偏高或偏差过高,以及增大训练集是否可以减小过拟合。
在这里插入图片描述

✌ 导库
from sklearn.datasets import load_digits # 导入手写数字集
from sklearn.model_selection import learning_curve # 导入学习曲线类
✌ 加载数据
fig,ax=plt.subplots(1,1,figsize=(6,6)) # 设置画布和子图
data=load_digits()
x,y=data.data,data.target # 加载特征矩阵和标签
✌ 画图
train_sizes,train_scores,test_scores=learning_curve(RandomForestClassifier(n_estimators=50),x,y,cv=10,n_jobs=4)
# 设置分类器为随机森林,x,y,5折交叉验证,cpu同时运算为4个
ax.set_ylim((0.7,1.1)) # 设置子图的纵坐标的范围为(0.7~1.1)
ax.set_xlabel("training examples") # 设置子图的x轴名称
ax.set_ylabel("score")
ax.grid() # 画出网图
ax.plot(train_sizes,np.mean(train_scores,axis=1),'o-',color='r',label='train score')
# 画训练集数据分数,横坐标为用作训练的样本数,纵坐标为不同折下的训练分数的均值
ax.plot(train_sizes,np.mean(test_scores,axis=1),'o-',color='g',label='test score')
ax.legend(loc='best') # 设置图例

plt.show()
  • 18
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
learning_curve函数是一种用于评估机器学习模型性能的方法。它可以帮助我们了解模型在不同训练集大小下的表现,并判断模型是否存在过拟合或欠拟合的问题。 该函数通常接受以下几个参数:训练数据集、目标变量、模型对象、交叉验证的折数和评估指标。函数会根据指定的参数进行交叉验证训练,并计算不同训练集大小下的训练集和测试集的性能指标。 learning_curve函数的主要作用是通过绘制学习曲线帮助我们分析模型的拟合情况和泛化能力。学习曲线通常以训练集样本数量为横轴,性能度量指标(如准确率或均方误差)为纵轴,分别绘制训练集和测试集的性能曲线。通过观察学习曲线的形状,我们可以判断模型是否存在欠拟合或过拟合的问题。 当模型存在欠拟合现象时,学习曲线会显示出训练集和测试集的性能都较低,并且两条曲线的差距较小。这说明模型无法很好地拟合训练数据,进而导致模型在测试集上的表现也不佳。此时,我们可以采取增加模型复杂度、增加特征数量或进行特征工程等方法来改善模型的性能。 当模型存在过拟合现象时,学习曲线会显示出训练集的性能较好,但测试集的性能较差,并且两条曲线的差距较大。这说明模型过度拟合了训练数据,导致在其他数据上的泛化能力较差。此时,我们可以采取增加训练数据、采用正则化方法或简化模型等方法来减少过拟合的问题。 综上所述,通过学习曲线函数可以帮助我们了解模型的拟合情况和泛化能力,从而优化机器学习模型的性能。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

海洋 之心

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

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

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

打赏作者

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

抵扣说明:

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

余额充值