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)[source]#
验证曲线。
确定训练和测试分数以获取不同参数值。
为指定参数的不同值计算估计器的分数。这与只有一个参数的网格搜索类似。然而,这也会计算训练分数,并且仅是一个用于绘制结果的实用工具。
在用户指南中阅读更多内容。
- 参数:
- estimator实现“fit”方法的对象类型
为此类型的对象,在每次验证时都会进行克隆。它还必须实现“predict”方法,除非
scoring
是一个不依赖“predict”来计算分数的函数。- X{类数组,稀疏矩阵},形状为 (n_samples, n_features)
训练向量,其中
n_samples
是样本数量,n_features
是特征数量。- y类数组,形状为 (n_samples,) 或 (n_samples, n_outputs) 或 None
对于分类或回归,X 的目标;对于无监督学习则为 None。
- param_name字符串
将要变化的参数名称。
- param_range类数组,形状为 (n_values,)
将被评估的参数值。
- groups类数组,形状为 (n_samples,),默认为 None
在将数据集拆分为训练/测试集时使用的样本的分组标签。仅与“Group”交叉验证实例(例如,
GroupKFold
)结合使用。1.6 版本中的变化:仅当未通过
sklearn.set_config(enable_metadata_routing=True)
启用元数据路由时,才能传递groups
。当启用路由时,请改为通过params
参数传递groups
和其他元数据。例如:validation_curve(..., params={'groups': groups})
。- cv整数,交叉验证生成器或可迭代对象,默认为 None
确定交叉验证的拆分策略。
cv
的可能输入有None,表示使用默认的 5 折交叉验证,
整数,表示指定
(Stratified)KFold
中的折叠数量,一个可迭代对象,产生索引数组形式的 (训练集,测试集) 拆分。
对于整数/None 输入,如果估计器是分类器且
y
是二分类或多分类,则使用StratifiedKFold
。在所有其他情况下,则使用KFold
。这些分割器以shuffle=False
初始化,因此在不同调用中分割结果将保持一致。请参阅用户指南,了解此处可使用的各种交叉验证策略。
0.22 版本中的变化:当
cv
为 None 时,默认值从 3 折交叉验证变更为 5 折交叉验证。- scoring字符串或可调用对象,默认为 None
用于评估训练集和测试集的分数方法。
- n_jobs整数,默认为 None
并行运行的作业数量。估计器的训练和分数计算并行于每个参数值和每个交叉验证拆分的组合。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。有关更多详细信息,请参阅术语表。- pre_dispatch整数或字符串,默认为“all”
并行执行的预调度作业数量(默认为“all”)。此选项可以减少分配的内存。字符串可以是诸如“2*n_jobs”的表达式。
- verbose整数,默认为 0
控制详细程度:值越高,消息越多。
- error_score‘raise’ 或数值,默认为 np.nan
如果估计器拟合中发生错误,分配给分数的值。如果设置为‘raise’,则抛出错误。如果给定数值,则抛出 FitFailedWarning。
0.20 版本新增。
- fit_params字典,默认为 None
要传递给估计器 fit 方法的参数。
自 1.6 版本弃用:此参数已弃用,并将在 1.8 版本中移除。请改用
params
。- params字典,默认为 None
要传递给估计器、评分器和交叉验证对象的参数。
如果
enable_metadata_routing=False
(默认):直接传递给估计器fit
方法的参数。如果
enable_metadata_routing=True
:安全地路由到估计器的fit
方法、评分器和交叉验证对象的参数。有关更多详细信息,请参阅元数据路由用户指南。
1.6 版本新增。
- 返回:
- train_scores形状为 (n_ticks, n_cv_folds) 的数组
训练集上的分数。
- test_scores形状为 (n_ticks, n_cv_folds) 的数组
测试集上的分数。
另请参阅
ValidationCurveDisplay.from_estimator
绘制给定估计器、数据和要变化参数的验证曲线。
注意
示例
>>> 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