validation_curve#

sklearn.model_selection.validation_curve(estimator, X, y, *, param_name, param_range, groups=None, cv=None, scoring=None, n_jobs=None, pre_dispatch='all', verbose=0, error_score=nan, fit_params=None)#

验证曲线。

确定不同参数值下的训练和测试分数。

计算具有不同指定参数值的估计器的分数。这类似于单参数的网格搜索。然而,这还将计算训练分数,并且仅仅是一个用于绘制结果的实用工具。

更多信息请参阅 用户指南

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。

param_namestr

将变化的参数名称。

param_range形状为 (n_values,) 的 array-like

将评估的参数值。

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

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

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) 的评分器可调用对象/函数。

n_jobsint,默认=None

并行运行的作业数量。训练估计器和计算分数在每个参数值和每个交叉验证拆分的组合上并行化。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关更多详细信息,请参阅 Glossary

pre_dispatchint 或 str,默认=’all’

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

verboseint,默认=0

控制详细程度:越高,消息越多。

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

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

Added in version 0.20.

fit_paramsdict,默认=None

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

Added in version 0.24.

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

训练集上的分数。

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

测试集上的分数。

Notes

参见 绘制验证曲线

Examples

>>> import numpy as np
>>> from sklearn.datasets import make_classification
>>> from sklearn.model_selection import validation_curve
>>> from sklearn.linear_model import LogisticRegression
>>> X, y = make_classification(n_samples=1_000, random_state=0)
>>> logistic_regression = LogisticRegression()
>>> param_name, param_range = "C", np.logspace(-8, 3, 10)
>>> train_scores, test_scores = validation_curve(
...     logistic_regression, X, y, param_name=param_name, param_range=param_range
... )
>>> print(f"The average train accuracy is {train_scores.mean():.2f}")
The average train accuracy is 0.81
>>> print(f"The average test accuracy is {test_scores.mean():.2f}")
The average test accuracy is 0.81