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, params=None)[源代码]#
验证曲线。
确定不同参数值下的训练和测试分数。
计算具有不同指定参数值的估计器的分数。这与具有单个参数的网格搜索类似。但是,它还将计算训练分数,并且仅仅是一个用于绘制结果的实用工具。
请参阅 用户指南 以了解更多信息。
- 参数:
- estimator实现“fit”方法的对象类型
该类型的对象,每次验证都会克隆。它还必须实现“predict”,除非
scoring是一个不依赖于“predict”来计算分数的函数。- Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}
训练向量,其中
n_samples是样本数,n_features是特征数。- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类似数组或 None
相对于 X 的分类或回归目标;对于无监督学习为 None。
- param_namestr
将要变化的参数的名称。
- param_rangearray-like,形状为 (n_values,)
将被评估的参数的值。
- groups形状为 (n_samples,) 的类数组对象,默认=None
在将数据集拆分为训练/测试集时使用的样本组标签。仅与“Group”cv 实例(例如
GroupKFold)结合使用。版本 1.6 已更改:
groups仅当通过sklearn.set_config(enable_metadata_routing=True)启用了元数据路由时才能传递。当启用路由时,请通过params参数与其他元数据一起传递groups。例如:validation_curve(..., params={'groups': groups})。- cvint, cross-validation generator or an iterable, default=None
确定交叉验证拆分策略。cv 的可能输入包括
None,使用默认的 5 折交叉验证,
int,指定
(Stratified)KFold中的折叠数,一个可迭代对象,产生索引数组形式的 (训练集, 测试集) 拆分。
对于 int/None 输入,如果估计器是分类器且
y是二元或多类别,则使用StratifiedKFold。在所有其他情况下,使用KFold。这些分割器以shuffle=False实例化,因此分割在不同调用中将相同。有关此处可使用的各种交叉验证策略,请参阅 用户指南。
版本 0.22 中已更改:如果为 None,
cv默认值从 3 折更改为 5 折。- scoringstr 或可调用对象,默认=None
用于评估训练集和测试集的评分方法。
str: 有关选项,请参阅 String name scorers。
callable: 带有签名
scorer(estimator, X, y)的可调用评分器对象(例如函数)。有关详细信息,请参阅 Callable scorers。None:使用estimator的 默认评估标准。
- n_jobsint, default=None
并行运行的作业数量。估计器的训练和分数的计算是针对每个参数值和每个交叉验证拆分的组合进行并行化的。
None表示 1,除非在joblib.parallel_backend上下文中。-1表示使用所有处理器。有关更多详细信息,请参阅 术语表。- pre_dispatchint or str, default=’all’
并行执行的预调度作业数(默认为全部)。该选项可以减少分配的内存。该字符串可以是像“2*n_jobs”这样的表达式。
- verboseint, default=0
控制详细程度:值越高,消息越多。
- error_score‘raise’ or numeric, default=np.nan
如果估计器拟合中发生错误,分配给分数的值。如果设置为 'raise',则会引发错误。如果给定一个数值,则会引发 FitFailedWarning。
0.20 版本新增。
- paramsdict, 默认=None
要传递给估计器、评分器和交叉验证对象的参数。
如果
enable_metadata_routing=False(默认):直接传递给估计器的fit方法的参数。如果
enable_metadata_routing=True:安全地路由到估计器的fit方法、评分器和交叉验证对象的参数。有关更多详细信息,请参阅 元数据路由用户指南。
版本 1.6 中新增。
- 返回:
- train_scoresarray,形状为 (n_ticks, n_cv_folds)
训练集上的得分。
- test_scoresarray,形状为 (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