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, params=None)[源代码]#

验证曲线。

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

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

阅读更多的 User Guide .

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

为每次验证而克隆的该类型的对象。它还必须实施“预测”,除非 scoring 是一个不依赖“预测”来计算分数的可调用对象。

X形状(n_samples,n_features)的{类数组,稀疏矩阵}

训练载体,在哪里 n_samples 是样本数量和 n_features 是功能的数量。

y形状的类似阵列(n_samples,)或(n_samples,n_outputs)或无

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

param_namestr

将更改的参数的名称。

param_range形状类似数组(n_values,)

将评估的参数的值。

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 相反,争论。例如: validation_curve(..., params={'groups': groups}) .

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

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

  • 无,要使用默认的5重交叉验证,

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

  • CV splitter ,

  • 可迭代产出(训练、测试)分裂为索引数组。

对于int/No输入,如果估计器是分类器并且 y 是二元或多类, StratifiedKFold 采用了在所有其他情况下, KFold 采用了这些拆分器实例化为 shuffle=False 因此不同呼叫之间的拆分将是相同的。

User Guide 这里可以使用的各种交叉验证策略。

在 0.22 版本发生变更: cv 如果无从3倍更改为5倍,则默认值。

scoring字符串或可调用,默认=无

字符串(请参阅 的 scoring 参数:定义模型评估规则 )或具有签名的记分器可调用对象/函数 scorer(estimator, X, y) .

n_jobsint,默认=无

要并行运行的作业数。训练估计器和计算分数在每个参数值和每个交叉验证分裂的组合上并行进行。 None 意思是1,除非在a中 joblib.parallel_backend 上下文 -1 意味着使用所有处理器。看到 Glossary 了解更多详细信息。

pre_dispatchint或url,默认=' all '

并行执行的预调度作业数(默认值为all)。该选项可以减少分配的内存。str可以是像'2*n_jobs'这样的表达式。

verboseint,默认=0

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

error_score“raise”或数字,默认=NP.nan

如果估计量匹配中出现错误,则指定给分数的值。如果设置为“raise”,则会引发错误。如果给出了数字值,则会引发FitUtiledWarning。

Added in version 0.20.

fit_paramsdict,默认=无

要传递给估计器的匹配方法的参数。

自 1.6 版本弃用: 此参数已被弃用,将在1.8版本中删除。使用 params 而不是.

paramsdict,默认=无

要传递给估计器、记分器和交叉验证对象的参数。

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

  • 如果 enable_metadata_routing=True :参数安全路由到 fit 估计器的方法、评分者和交叉验证对象。看到 Metadata Routing User Guide 了解更多详细信息。

Added in version 1.6.

返回:
train_scores形状数组(n_ticks,n_cv_folds)

Scores on training sets.

test_scores形状数组(n_ticks,n_cv_folds)

测试集上的分数。

注意到

看到 模型正规化对训练和测试误差的影响

示例

>>> 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