sklearn.model_selection.learning_curve的详细介绍(包含ShuffleSplit()介绍)

提示:sklearn.model_selection.learning_curve的详细介绍


1、需求分析

通过参数train_size选取不同规模的数据集,再分别在不同规模的数据集上做交叉验证,通过参数cv选取交叉验证的类型;

例如:我们想选取含有1000个样本的数据集的10%,33%,55%,78%,100%的数据做实验,探究不同数据量下模型的预测准确度,选取不同规模的数据集后,我们又想分别在不同规模的数据集下做一下5折交叉验证。我们就可以设train_size=array([0.1, 0.33, 0.55, 0.78, 1.]), cv=5。

2、learning_curve主要输出参数

train_sizes_abs:返回生成的训练的样本数,如[ 80 , 260 , 620,800 ],80=0.1×1000×[(5-1)/5]即train_sizes_abs[i]=train_size[i]×样本数×(cv对应每一次交叉验证的训练样本占总样本的百分比)
train_scores:返回训练集分数,该矩阵为( len ( train_sizes_abs ) , cv分割数 )即(5,5)维的分数,每行数据代表该样本数对应不同折的分数。
test_scores:同train_scores,只不过是这个对应的是测试集分数

3、learning_curve主要参数

X:特征矩阵,包含输入样本的特征。
y:目标变量,包含与输入样本对应的真实标签。
train_sizes:一个数组或可迭代对象,表示训练集的不同大小的比例。每个比例都将生成一个学习曲线点。
cv:用于交叉验证的折数或交叉验证迭代器。
scoring:用于评估模型性能的指标。常见的指标包括准确率(accuracy)、均方误差(mean_squared_error)、R平方(r2_score)等。
shuffle:是否在每次迭代前对数据进行洗牌,默认为False。
random_state:随机数种子,用于控制随机性。
estimator:用于拟合数据的机器学习模型,例如分类器或回归器。

4、learning_curve作用

在这里插入图片描述
引用出处

5、learning_curve代码

代码如下(示例):

from sklearn.metrics import confusion_matrix as CM
import numpy as np
import matplotlib.pyplot as plt
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier as RFC
from sklearn.tree import DecisionTreeClassifier as DTC
from sklearn.linear_model import LogisticRegression as LR
from sklearn.datasets import load_digits
from sklearn.model_selection import learning_curve  # 画学习曲线的类
from sklearn.model_selection import ShuffleSplit  # 设定交叉验证模式的类
from time import time
import datetime
from sklearn.metrics import brier_score_loss as bsl
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression as LR
from sklearn.model_selection import train_test_split


def plot_learning_curve(estimator, title, X, y,
                        ax,  # 选择子图
                        ylim=None,  # 设置纵坐标的取值范围
                        cv=None,  # 交叉验证
                        n_jobs=None  # 设定索要使用的线程
                        ):
    train_sizes, train_scores, test_scores = learning_curve(estimator, X, y
                                                            , cv=cv, n_jobs=n_jobs)
    # learning_curve() 是一个可视化工具,用于评估机器学习模型的性能和训练集大小之间的关系。它可以帮助我们理解模型在不同数据规模下的训练表现,
    # 进而判断模型是否出现了欠拟合或过拟合的情况。该函数会生成一条曲线,横轴表示不同大小的训练集,纵轴表示训练集和交叉验证集上的评估指标(例如
    # 准确率、损失等)。通过观察曲线,我们可以得出以下结论:
    # 1,训练集误差和交叉验证集误差之间的关系:当训练集规模较小时,模型可能过度拟合,训练集误差较低,交叉验证集误差较高;当训练集规模逐渐增大时,
    #    模型可能更好地泛化,两者的误差逐渐趋于稳定。
    # 2,训练集误差和交叉验证集误差对训练集规模的响应:通过观察曲线的斜率,我们可以判断模型是否存在高方差(过拟合)或高偏差(欠拟合)的问题。如果
    #    训练集和交叉验证集的误差都很高,且二者之间的间隔较大,说明模型存在高偏差;如果训练集误差很低而交叉验证集误差较高,且二者的间隔也较大,说
    #   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值