LearningCurveDisplay#
- class sklearn.model_selection.LearningCurveDisplay(*, train_sizes, train_scores, test_scores, score_name=None)[source]#
学习曲线可视化。
建议使用
from_estimator
来创建LearningCurveDisplay
实例。所有参数都作为属性存储。有关可视化 API 的一般信息,请参阅用户指南,有关学习曲线可视化的详细文档请参阅相关章节。
在 1.2 版中添加。
- 参数:
- train_sizes形状为 (n_unique_ticks,) 的 ndarray
用于生成学习曲线的训练样本数量。
- train_scores形状为 (n_ticks, n_cv_folds) 的 ndarray
训练集上的分数。
- test_scores形状为 (n_ticks, n_cv_folds) 的 ndarray
测试集上的分数。
- score_name字符串,默认值为 None
用于
learning_curve
中的分数名称。它将覆盖从scoring
参数推断的名称。如果score
为None
,则在negate_score
为False
时使用"Score"
,否则使用"Negative score"
。如果scoring
是一个字符串或可调用对象,我们将推断其名称。我们用空格替换_
并将首字母大写。如果negate_score
为False
,我们删除neg_
并将其替换为"Negative"
,否则直接删除。
- 属性:
- ax_matplotlib Axes
带有学习曲线的 Axes。
- figure_matplotlib Figure
包含学习曲线的 Figure。
- errorbar_matplotlib Artist 列表或 None
当
std_display_style
为"errorbar"
时,这是一个matplotlib.container.ErrorbarContainer
对象列表。如果使用其他样式,errorbar_
为None
。- lines_matplotlib Artist 列表或 None
当
std_display_style
为"fill_between"
时,这是一个matplotlib.lines.Line2D
对象列表,对应于平均训练和测试分数。如果使用其他样式,line_
为None
。- fill_between_matplotlib Artist 列表或 None
当
std_display_style
为"fill_between"
时,这是一个matplotlib.collections.PolyCollection
对象列表。如果使用其他样式,fill_between_
为None
。
另请参见
示例
>>> import matplotlib.pyplot as plt >>> from sklearn.datasets import load_iris >>> from sklearn.model_selection import LearningCurveDisplay, learning_curve >>> from sklearn.tree import DecisionTreeClassifier >>> X, y = load_iris(return_X_y=True) >>> tree = DecisionTreeClassifier(random_state=0) >>> train_sizes, train_scores, test_scores = learning_curve( ... tree, X, y) >>> display = LearningCurveDisplay(train_sizes=train_sizes, ... train_scores=train_scores, test_scores=test_scores, score_name="Score") >>> display.plot() <...> >>> plt.show()
- classmethod from_estimator(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, fit_params=None, ax=None, negate_score=False, score_name=None, score_type='both', std_display_style='fill_between', line_kw=None, fill_between_kw=None, errorbar_kw=None)[source]#
从估计器创建学习曲线显示。
有关可视化 API 的一般信息,请参阅用户指南,有关学习曲线可视化的详细文档请参阅相关章节。
- 参数:
- estimator实现“fit”和“predict”方法的对象类型
为每次验证而克隆的该类型的对象。
- X形状为 (n_samples, n_features) 的类数组对象
训练数据,其中
n_samples
是样本数量,n_features
是特征数量。- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组对象或 None
用于分类或回归的相对于 X 的目标;无监督学习为 None。
- groups形状为 (n_samples,) 的类数组对象,默认值为 None
在将数据集拆分为训练/测试集时使用的样本的分组标签。仅与“Group” cv 实例(例如
GroupKFold
)结合使用。- train_sizes形状为 (n_ticks,) 的类数组对象,默认值为 np.linspace(0.1, 1.0, 5)
将用于生成学习曲线的训练样本的相对或绝对数量。如果 dtype 是浮点数,则将其视为训练集最大大小(由所选验证方法决定)的一部分,即必须在 (0, 1] 范围内。否则,它将被解释为训练集的绝对大小。请注意,对于分类,样本数量通常需要足够大,以包含每个类别至少一个样本。
- cv整数、交叉验证生成器或可迭代对象,默认值为 None
决定交叉验证的分割策略。`cv` 的可能输入包括:
None,使用默认的 5 折交叉验证,
整数,指定
(Stratified)KFold
中的折叠数量,一个可迭代对象,生成 (训练,测试) 分割,作为索引数组。
对于整数/None 输入,如果估计器是分类器且
y
是二元或多类,则使用StratifiedKFold
。在所有其他情况下,使用KFold
。这些分割器使用shuffle=False
实例化,因此在多次调用中分割将保持一致。有关此处可使用的各种交叉验证策略,请参阅用户指南。
- scoring字符串或可调用对象,默认值为 None
计算学习曲线时使用的评分方法。选项:
- exploit_incremental_learning布尔值,默认值为 False
如果估计器支持增量学习,这将用于加速不同训练集大小的拟合过程。
- n_jobs整数,默认值为 None
并行运行的作业数量。估计器的训练和分数计算在不同的训练集和测试集上并行进行。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。更多详情请参见术语表。- pre_dispatch整数或字符串,默认值为“all”
并行执行的预调度作业数量(默认为所有)。该选项可以减少分配的内存。字符串可以是“2*n_jobs”这样的表达式。
- verbose整数,默认值为 0
控制详细程度:值越高,消息越多。
- shuffle布尔值,默认值为 False
是否在根据
train_sizes
获取训练数据前缀之前打乱训练数据。- random_state整数、RandomState 实例或 None,默认值为 None
在
shuffle
为 True 时使用。传入一个整数以在多次函数调用中获得可重现的输出。参见术语表。- error_score“raise”或数值,默认值为 np.nan
如果估计器拟合中发生错误,分配给分数的值。如果设置为“raise”,则抛出错误。如果给定数值,则会引发 `FitFailedWarning`。
- fit_params字典,默认值为 None
传递给估计器
fit
方法的参数。- axmatplotlib Axes,默认值为 None
用于绘图的 Axes 对象。如果为
None
,则创建新的图和 Axes。- negate_score布尔值,默认值为 False
是否对通过
learning_curve
获得的分数取反。这在使用scikit-learn
中由neg_*
表示的误差时特别有用。- score_name字符串,默认值为 None
用于装饰绘图y轴的分数名称。它将覆盖从
scoring
参数推断的名称。如果score
为None
,则在negate_score
为False
时使用"Score"
,否则使用"Negative score"
。如果scoring
是一个字符串或可调用对象,我们将推断其名称。我们用空格替换_
并将首字母大写。如果negate_score
为False
,我们删除neg_
并将其替换为"Negative"
,否则直接删除。- score_type{"test", "train", "both"},默认值为“both”
要绘制的分数类型。可以是
"test"
、"train"
或"both"
之一。- std_display_style{"errorbar", "fill_between"} 或 None,默认值为“fill_between”
用于显示平均分数周围分数标准差的样式。如果为
None
,则不显示标准差的表示。- line_kw字典,默认值为 None
传递给用于绘制平均分数的
plt.plot
的额外关键字参数。- fill_between_kw字典,默认值为 None
传递给用于绘制分数标准差的
plt.fill_between
的额外关键字参数。- errorbar_kw字典,默认值为 None
传递给用于绘制平均分数和标准差分数的
plt.errorbar
的额外关键字参数。
- 返回:
- display
LearningCurveDisplay
存储计算值的对象。
- display
示例
>>> import matplotlib.pyplot as plt >>> from sklearn.datasets import load_iris >>> from sklearn.model_selection import LearningCurveDisplay >>> from sklearn.tree import DecisionTreeClassifier >>> X, y = load_iris(return_X_y=True) >>> tree = DecisionTreeClassifier(random_state=0) >>> LearningCurveDisplay.from_estimator(tree, X, y) <...> >>> plt.show()
- plot(ax=None, *, negate_score=False, score_name=None, score_type='both', std_display_style='fill_between', line_kw=None, fill_between_kw=None, errorbar_kw=None)[source]#
绘制可视化图。
- 参数:
- axmatplotlib Axes,默认值为 None
用于绘图的 Axes 对象。如果为
None
,则创建新的图和 Axes。- negate_score布尔值,默认值为 False
是否对通过
learning_curve
获得的分数取反。这在使用scikit-learn
中由neg_*
表示的误差时特别有用。- score_name字符串,默认值为 None
用于装饰绘图y轴的分数名称。它将覆盖从
scoring
参数推断的名称。如果score
为None
,则在negate_score
为False
时使用"Score"
,否则使用"Negative score"
。如果scoring
是一个字符串或可调用对象,我们将推断其名称。我们用空格替换_
并将首字母大写。如果negate_score
为False
,我们删除neg_
并将其替换为"Negative"
,否则直接删除。- score_type{"test", "train", "both"},默认值为“both”
要绘制的分数类型。可以是
"test"
、"train"
或"both"
之一。- std_display_style{"errorbar", "fill_between"} 或 None,默认值为“fill_between”
用于显示平均分数周围分数标准差的样式。如果为 None,则不显示标准差表示。
- line_kw字典,默认值为 None
传递给用于绘制平均分数的
plt.plot
的额外关键字参数。- fill_between_kw字典,默认值为 None
传递给用于绘制分数标准差的
plt.fill_between
的额外关键字参数。- errorbar_kw字典,默认值为 None
传递给用于绘制平均分数和标准差分数的
plt.errorbar
的额外关键字参数。
- 返回:
- display
LearningCurveDisplay
存储计算值的对象。
- display