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次运行的分数求平均。
阅读更多的 User Guide .
- 参数:
- estimator实现“fit”方法的对象类型
为每次验证而克隆的该类型的对象。它还必须实施“预测”,除非
scoring
是一个不依赖“预测”来计算分数的可调用对象。- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
训练载体,在哪里
n_samples
是样本数量和n_features
是功能的数量。- y形状的类似阵列(n_samples,)或(n_samples,n_outputs)或无
用于分类或回归的目标相对于X;无监督学习。
- groups形状类似数组(n_samples,),默认=无
Group labels for the samples used while splitting the dataset into train/test set. Only used in conjunction with a "Group" cv instance (e.g.,
GroupKFold
).在 1.6 版本发生变更:
groups
只能在未通过启用元数据路由时传递sklearn.set_config(enable_metadata_routing=True)
.启用路由后,通过groups
与其他元数据一起,params
相反,争论。例如:learning_curve(..., params={'groups': groups})
.- train_sizes形状类似数组(n_ticks,), 默认=NP.linSpace(0.1,1.0,5)
将用于生成学习曲线的训练示例的相对或绝对数量。如果dype是float,则它被视为训练集最大大小(由所选验证方法确定)的一小部分,即它必须在(0,1]内。否则,它被解释为训练集的绝对大小。请注意,对于分类,样本的数量通常必须足够大,以包含来自每个类别的至少一个样本。
- cvint,交叉验证生成器或可迭代对象,默认=无
确定交叉验证拆分策略。简历的可能输入包括:
无,要使用默认的5重交叉验证,
int,指定中的折叠数
(Stratified)KFold
,可迭代产出(训练、测试)分裂为索引数组。
对于int/No输入,如果估计器是分类器并且
y
是二元或多类,StratifiedKFold
采用了在所有其他情况下,KFold
采用了这些拆分器实例化为shuffle=False
因此不同呼叫之间的拆分将是相同的。指 User Guide 这里可以使用的各种交叉验证策略。
在 0.22 版本发生变更:
cv
如果无从3倍更改为5倍,则默认值。- scoring字符串或可调用,默认=无
字符串(请参阅 的 scoring 参数:定义模型评估规则 )或具有签名的记分器可调用对象/函数
scorer(estimator, X, y)
.- exploit_incremental_learning布尔,默认=假
如果估计器支持增量学习,则这将用于加快对不同训练集大小的匹配。
- n_jobsint,默认=无
要并行运行的作业数。训练估计器和计算分数在不同的训练和测试集中并行进行。
None
意思是1,除非在a中joblib.parallel_backend
上下文-1
意味着使用所有处理器。看到 Glossary 了解更多详细信息。- pre_dispatchint或url,默认=' all '
并行执行的预调度作业数(默认值为all)。该选项可以减少分配的内存。str可以是像'2*n_jobs'这样的表达式。
- verboseint,默认=0
控制详细程度:越高,消息越多。
- shuffle布尔,默认=假
是否在根据“train_sizes”获取训练数据的开头之前对训练数据进行洗牌。
- random_stateint,RandomState实例或无,默认=无
时使用
shuffle
是真的传递一个int值,以便在多个函数调用中获得可重复的输出。看到 Glossary .- error_score“raise”或数字,默认=NP.nan
如果估计量匹配中出现错误,则指定给分数的值。如果设置为“raise”,则会引发错误。如果给出了数字值,则会引发FitUtiledWarning。
Added in version 0.20.
- return_times布尔,默认=假
是否恢复适合和得分时间。
- fit_paramsdict,默认=无
要传递给估计器的匹配方法的参数。
自 1.6 版本弃用: 此参数已被弃用,将在1.8版本中删除。使用
params
而不是.- paramsdict,默认=无
要传递给
fit
评估者和评分者的方法。如果
enable_metadata_routing=False
(默认):参数直接传递给fit
估计者的方法。如果
enable_metadata_routing=True
:参数安全路由到fit
估计者的方法。看到 Metadata Routing User Guide 了解更多详细信息。
Added in version 1.6.
- 返回:
- train_sizes_abs形状数组(n_unique_ticks,)
用于生成学习曲线的训练示例的数量。请注意,标记数可能小于n_ticks,因为重复的条目将被删除。
- train_scores形状数组(n_ticks,n_cv_folds)
Scores on training sets.
- test_scores形状数组(n_ticks,n_cv_folds)
测试集上的分数。
- fit_times形状数组(n_ticks,n_cv_folds)
几秒钟内的试穿时间。只有在以下情况下才存在
return_times
是真的- score_times形状数组(n_ticks,n_cv_folds)
得分时间(秒)。只有在以下情况下才存在
return_times
是真的
示例
>>> 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