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
中的折数,一个可迭代对象,生成 (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