learning_curve#
- sklearn.model_selection.learning_curve(estimator, X, y, *, groups=None, train_sizes=array([0.1, 0.33, 0.55, 0.78, 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, params=None)[source]#
学习曲线。
确定不同训练集大小的交叉验证训练得分和测试得分。
交叉验证生成器将整个数据集分成训练数据和测试数据k次。将使用不同大小的训练集子集来训练估计器,并计算每个训练集子集大小和测试集的得分。然后,将对每个训练集子集大小的所有 k 次运行的得分进行平均。
在用户指南中阅读更多内容。
- 参数:
- estimator实现“fit”方法的对象类型
每次验证都会克隆该类型的对象。它还必须实现“predict”,除非
scoring是一个不依赖“predict”来计算得分的可调用对象。- Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}
训练向量,其中
n_samples是样本数,n_features是特征数。- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类似数组或 None
相对于 X 的分类或回归目标;对于无监督学习为 None。
- groups形状为 (n_samples,) 的类数组对象,默认=None
在将数据集拆分为训练/测试集时使用的样本组标签。仅与“Group”cv 实例(例如
GroupKFold)结合使用。版本 1.6 中的更改: 只有在未通过
sklearn.set_config(enable_metadata_routing=True)启用元数据路由时,才能传递groups。当启用路由时,请通过params参数与其他元数据一起传递groups。例如:learning_curve(..., params={'groups': groups})。- train_sizes形状为 (n_ticks,) 的类似数组, 默认为 np.linspace(0.1, 1.0, 5)
将用于生成学习曲线的训练示例的相对或绝对数量。如果 dtype 是 float,则将其视为训练集最大大小(由所选验证方法确定)的一部分,即它必须在 (0, 1] 范围内。否则,它被解释为训练集的绝对大小。请注意,对于分类,样本数量通常必须足够大,以包含每个类别至少一个样本。
- cvint, cross-validation generator or an iterable, default=None
确定交叉验证拆分策略。cv 的可能输入包括
None,使用默认的 5 折交叉验证,
int,指定
(Stratified)KFold中的折叠数,一个可迭代对象,产生索引数组形式的 (训练集, 测试集) 拆分。
对于 int/None 输入,如果估计器是分类器且
y是二元或多类别,则使用StratifiedKFold。在所有其他情况下,使用KFold。这些分割器以shuffle=False实例化,因此分割在不同调用中将相同。有关此处可使用的各种交叉验证策略,请参阅 用户指南。
版本 0.22 中已更改:如果为 None,
cv默认值从 3 折更改为 5 折。- scoringstr 或可调用对象,默认=None
用于评估训练集和测试集的评分方法。
str: 有关选项,请参阅 String name scorers。
callable: 带有签名
scorer(estimator, X, y)的可调用评分器对象(例如函数)。有关详细信息,请参阅 Callable scorers。None:使用estimator的 默认评估标准。
- exploit_incremental_learningbool, default=False
如果估计器支持增量学习,这将用于加快不同训练集大小的拟合速度。
- n_jobsint, default=None
并行运行的作业数。估计器的训练和得分计算在不同的训练集和测试集上并行化。
None表示 1,除非在joblib.parallel_backend上下文中。-1表示使用所有处理器。有关详细信息,请参阅词汇表。- pre_dispatchint or str, default=’all’
并行执行的预调度作业数(默认为全部)。该选项可以减少分配的内存。该字符串可以是像“2*n_jobs”这样的表达式。
- verboseint, default=0
控制详细程度:值越高,消息越多。
- shufflebool, default=False
是否在根据``train_sizes``取其前缀之前打乱训练数据。
- random_stateint, RandomState instance or None, default=None
当
shuffle为 True 时使用。传递一个 int 以在多次函数调用中获得可重现的输出。请参阅词汇表。- error_score‘raise’ or numeric, default=np.nan
如果估计器拟合中发生错误,分配给分数的值。如果设置为 'raise',则会引发错误。如果给定一个数值,则会引发 FitFailedWarning。
0.20 版本新增。
- return_timesbool, default=False
是否返回拟合和得分时间。
- paramsdict, 默认=None
要传递给估计器的
fit方法和评分器的参数。如果
enable_metadata_routing=False(默认):直接传递给估计器的fit方法的参数。如果
enable_metadata_routing=True:安全路由到估计器的fit方法的参数。有关详细信息,请参阅元数据路由用户指南。
版本 1.6 中新增。
- 返回:
- 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 时存在。
另请参阅
LearningCurveDisplay.from_estimator使用估计器和数据绘制学习曲线。
示例
>>> 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