learning_curve#

sklearn.model_selection.learning_curve(estimator, X, y, *, groups=None, train_sizes=array([0.1, 0.325, 0.55, 0.775, 1.]), cv=None, scoring=None, exploit_incremental_learning=False, n_jobs=None, pre_dispatch='all', verbose=0, shuffle=False, random_state=None, error_score=nan, return_times=False, fit_params=None, params=None)#

学习曲线。

确定不同训练集大小的交叉验证训练和测试分数。

一个交叉验证生成器将整个数据集分成k次训练和测试数据。将使用不同大小的训练集子集来训练估计器,并为每个训练子集大小和测试集计算分数。之后,将对每个训练子集大小的分数在所有k次运行中进行平均。

用户指南 中阅读更多内容。

Parameters:
estimator实现 “fit” 方法的对象类型

每个验证克隆的对象。它还必须实现 “predict”,除非 scoring 是一个不依赖于 “predict” 来计算分数的可调用对象。

X{array-like, sparse matrix} 形状为 (n_samples, n_features)

训练向量,其中 n_samples 是样本数量, n_features 是特征数量。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的 array-like 或 None

相对于 X 的分类或回归目标; 无监督学习为 None。

groups形状为 (n_samples,) 的 array-like, 默认=None

在将数据集拆分为训练/测试集时使用的样本组标签。仅在与 “Group” cv 实例(例如 GroupKFold )结合使用时使用。

Changed in version 1.6: groups 只能在未通过 sklearn.set_config(enable_metadata_routing=True) 启用元数据路由时传递。启用路由时,通过 params 参数与其他元数据一起传递 groups 。例如: learning_curve(..., params={'groups': groups})

train_sizes形状为 (n_ticks,) 的 array-like, 默认=np.linspace(0.1, 1.0, 5)

将用于生成学习曲线的相对或绝对训练示例数量。如果 dtype 是 float,则视为训练集最大大小的分数(由选定的验证方法确定),即必须在 (0, 1] 范围内。否则,它被解释为训练集的绝对大小。请注意,对于分类,样本数量通常必须足够大,以包含每个类至少一个样本。

cvint, 交叉验证生成器或可迭代对象, 默认=None

确定交叉验证拆分策略。 cv 的可能输入包括:

  • None,使用默认的 5 折交叉验证,

  • int,指定 (Stratified)KFold 中的折数,

  • CV splitter ,

  • 一个生成 (train, test) 拆分作为索引数组的迭代器。

对于 int/None 输入,如果估计器是分类器且 y 是二元或多元的,则使用 StratifiedKFold 。在所有其他情况下,使用 KFold 。这些拆分器以 shuffle=False 实例化,因此拆分在调用之间将是相同的。

参考 用户指南 以了解可以在此处使用的各种交叉验证策略。

Changed in version 0.22: cv 的默认值如果为 None 则从 3 折更改为 5 折。

scoringstr 或可调用对象, 默认=None

一个 str(见 scoring_parameter )或一个具有签名 scorer(estimator, X, y) 的评分器可调用对象/函数。

exploit_incremental_learningbool, 默认=False

如果估计器支持增量学习,这将用于加速不同训练集大小的拟合。

n_jobsint, 默认=None

并行运行的作业数量。估计器的训练和分数计算在不同的训练和测试集上并行化。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关更多详细信息,请参见 Glossary

pre_dispatchint 或 str, 默认=’all’

并行执行的预分派作业数量(默认是所有)。该选项可以减少分配的内存。str 可以是像 ‘2*n_jobs’ 这样的表达式。

verboseint, 默认=0

控制冗长程度:越高,消息越多。

shufflebool, 默认=False

在基于 train_sizes 取前缀之前是否对训练数据进行洗牌。

random_stateint, RandomState 实例或 None, 默认=None

shuffle 为 True 时使用。传递一个 int 以在多次函数调用中获得可重复的输出。 见 Glossary

error_score‘raise’ 或 numeric, 默认=np.nan

在估计器拟合过程中发生错误时分配给分数的值。如果设置为 ‘raise’,则引发错误。 如果给定数值,则引发 FitFailedWarning。

Added in version 0.20.

return_timesbool, 默认=False

是否返回拟合和评分时间。

fit_paramsdict, 默认=None

传递给估计器 fit 方法的参数。

Deprecated since version 1.6: 此参数已弃用,将在 1.6 版本中移除。请使用 params 代替。

paramsdict, 默认=None

传递给估计器 fit 方法和评分器的参数。

  • 如果 enable_metadata_routing=False (默认): 参数直接传递给估计器的 fit 方法。

  • 如果 enable_metadata_routing=True : 参数安全地路由到估计器的 fit 方法。 有关更多详细信息,请参见 Metadata Routing User Guide

Added in version 1.6.

Returns:
train_sizes_abs形状为 (n_unique_ticks,) 的数组

已用于生成学习曲线的训练示例数量。请注意,刻度数可能少于 n_ticks,因为重复条目将被删除。

train_scores形状为 (n_ticks, n_cv_folds) 的数组

训练集上的分数。

test_scores形状为 (n_ticks, n_cv_folds) 的数组

测试集上的分数。

fit_times形状为 (n_ticks, n_cv_folds) 的数组

花费在拟合上的时间(秒)。仅当 return_times 为 True 时存在。

score_times形状为 (n_ticks, n_cv_folds) 的数组

花费在评分上的时间(秒)。仅当 return_times 为 True 时存在。

Examples

>>> from sklearn.datasets import make_classification
>>> from sklearn.tree import DecisionTreeClassifier
>>> from sklearn.model_selection import learning_curve
>>> X, y = make_classification(n_samples=100, n_features=10, random_state=42)
>>> tree = DecisionTreeClassifier(max_depth=4, random_state=42)
>>> train_size_abs, train_scores, test_scores = learning_curve(
...     tree, X, y, train_sizes=[0.3, 0.6, 0.9]
... )
>>> for train_size, cv_train_scores, cv_test_scores in zip(
...     train_size_abs, train_scores, test_scores
... ):
...     print(f"{train_size} samples were used to train the model")
...     print(f"The average train accuracy is {cv_train_scores.mean():.2f}")
...     print(f"The average test accuracy is {cv_test_scores.mean():.2f}")
24 samples were used to train the model
The average train accuracy is 1.00
The average test accuracy is 0.85
48 samples were used to train the model
The average train accuracy is 1.00
The average test accuracy is 0.90
72 samples were used to train the model
The average train accuracy is 1.00
The average test accuracy is 0.93