本文简要介绍python语言中 sklearn.model_selection.GridSearchCV
的用法。
用法:
class sklearn.model_selection.GridSearchCV(estimator, param_grid, *, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_score=nan, return_train_score=False)
对估计器的指定参数值进行详尽搜索。
重要成员是合适的,预测。
GridSearchCV 实现了 “fit” 和 “score” 方法。如果在使用的估计器中实现了“score_samples”、“predict”、“predict_proba”、“decision_function”、“transform” 和“inverse_transform”,它还实现了它们。
用于应用这些方法的估计器的参数由 cross-validated grid-search 在参数网格上进行优化。
在用户指南中阅读更多信息。
- estimator:估计器对象
假设这实现了scikit-learn 估计器接口。估计器需要提供
score
函数,或者必须传递scoring
。- param_grid:字典或字典列表
以参数名称 (
str
) 作为键的字典和要尝试作为值的参数设置列表,或此类字典的列表,在这种情况下,将探索列表中每个字典跨越的网格。这可以搜索任何参数设置序列。- scoring:str, callable, list, tuple or dict, default=None
评估cross-validated模型在测试集上的性能的策略。
如果
scoring
表示单个分数,则可以使用:- 单个字符串(参见评分参数:定义模型评估规则);
- 一个可调用的(见从度量函数定义你的评分策略) 返回单个值。
如果
scoring
代表多个分数,可以使用:- 唯一字符串的列表或元组;
- 一个可调用的返回一个字典,其中键是指标名称,值是指标分数;
- 以度量名称作为键和可调用值的字典。
有关示例,请参阅指定多个指标进行评估。
- n_jobs:整数,默认=无
并行运行的作业数。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。有关详细信息,请参阅词汇表。- refit:bool, str, or callable, default=True
使用整个数据集上找到的最佳参数重新拟合估计器。
对于多指标评估,这需要是一个
str
,表示将用于找到最后重新拟合估计器的最佳参数的记分器。在选择最佳估计器时除了最大分数之外还有其他考虑因子,可以将
refit
设置为返回所选best_index_
给定cv_results_
的函数。在这种情况下,best_estimator_
和best_params_
将根据返回的best_index_
设置,而best_score_
属性将不可用。重新安装的估计器在
best_estimator_
属性中可用,并允许直接在此GridSearchCV
实例上使用predict
。此外,对于多指标评估,属性
best_index_
、best_score_
和best_params_
仅在设置了refit
时可用,并且所有这些属性都将根据这个特定的记分器来确定。请参阅
scoring
参数以了解有关多指标评估的更多信息。- cv:int,交叉验证生成器或可迭代的,默认=无
确定交叉验证拆分策略。 cv 的可能输入是:
- 无,使用默认的 5 折交叉验证,
- 整数,指定
(Stratified)KFold
中的折叠数, - CV分配器,
- 一个可迭代的 yield (train, test) 拆分为索引数组。
对于整数/无输入,如果估计器是分类器并且
y
是二进制或多类,则使用StratifiedKFold
。在所有其他情况下,使用KFold
。这些拆分器使用shuffle=False
实例化,因此拆分在调用之间将是相同的。有关可在此处使用的各种交叉验证策略,请参阅用户指南。
- verbose:int
控制详细程度:越高,消息越多。
- >1:显示每个折叠和参数候选的计算时间;
- >2:分数也显示;
- >3:折叠和候选参数索引也与计算的开始时间一起显示。
- pre_dispatch:int 或 str,默认 ='2*n_jobs'
控制在并行执行期间分派的作业数。当调度的作业多于 CPU 可以处理的数量时,减少此数字有助于避免内存消耗的爆炸式增长。该参数可以是:
无,在这种情况下,所有作业都会立即创建和生成。将此用于轻量级和 fast-running 作业,以避免由于生成作业 on-demand 造成的延迟
一个 int,给出产生的总作业的确切数量
一个 str,给出一个表达式作为 n_jobs 的函数,如 ‘2*n_jobs’
- error_score:‘raise’ 或数字,默认=np.nan
如果在估计器拟合中发生错误,则分配给分数的值。如果设置为‘raise’,则会引发错误。如果给出数值,则引发FitFailedWarning。此参数不影响改装步骤,这将始终引发错误。
- return_train_score:布尔,默认=假
如果
False
,则cv_results_
属性将不包括训练分数。计算训练分数用于深入了解不同的参数设置如何影响过拟合/欠拟合权衡。然而,在训练集上计算分数可能在计算上很昂贵,并且不严格要求选择产生最佳泛化性能的参数。
- cv_results_:numpy(屏蔽)ndarrays的字典
一个带有键作为列标题和值作为列的字典,可以导入到 pandas
DataFrame
中。例如下面给出的表格
param_kernel
param_gamma
param_degree
split0_test_score
…
rank_t…
‘poly’
-
2
0.80
…
2
‘poly’
-
3
0.70
…
4
‘rbf’
0.1
-
0.80
…
3
‘rbf’
0.2
-
0.93
…
1
将由
cv_results_
字典表示:{ 'param_kernel': masked_array(data = ['poly', 'poly', 'rbf', 'rbf'], mask = [False False False False]...) 'param_gamma': masked_array(data = [-- -- 0.1 0.2], mask = [ True True False False]...), 'param_degree': masked_array(data = [2.0 3.0 -- --], mask = [False False True True]...), 'split0_test_score' : [0.80, 0.70, 0.80, 0.93], 'split1_test_score' : [0.82, 0.50, 0.70, 0.78], 'mean_test_score' : [0.81, 0.60, 0.75, 0.85], 'std_test_score' : [0.01, 0.10, 0.05, 0.08], 'rank_test_score' : [2, 4, 3, 1], 'split0_train_score' : [0.80, 0.92, 0.70, 0.93], 'split1_train_score' : [0.82, 0.55, 0.70, 0.87], 'mean_train_score' : [0.81, 0.74, 0.70, 0.90], 'std_train_score' : [0.01, 0.19, 0.00, 0.03], 'mean_fit_time' : [0.73, 0.63, 0.43, 0.49], 'std_fit_time' : [0.01, 0.02, 0.01, 0.01], 'mean_score_time' : [0.01, 0.06, 0.04, 0.04], 'std_score_time' : [0.00, 0.00, 0.00, 0.01], 'params' : [{'kernel': 'poly', 'degree': 2}, ...], }
NOTE
键
'params'
用于存储所有候选参数的参数设置字典列表。mean_fit_time
、std_fit_time
、mean_score_time
和std_score_time
都以秒为单位。对于多指标评估,所有记分员的分数都可以在
cv_results_
字典中以记分员姓名 ('_<scorer_name>'
) 结尾的键中获得,而不是上面显示的'_score'
。 (‘split0_test_precision’, ‘mean_train_precision’等)- best_estimator_:估计器
搜索选择的估计器,即在遗漏数据上给出最高分数(或最小损失,如果指定)的估计器。如果
refit=False
则不可用。有关允许值的更多信息,请参阅
refit
参数。- best_score_:浮点数
best_estimator 的平均 cross-validated 得分
对于多指标评估,仅当指定
refit
时才存在。如果
refit
是函数,则此属性不可用。- best_params_:dict
在保留数据上给出最佳结果的参数设置。
对于多指标评估,仅当指定
refit
时才存在。- best_index_:int
对应于最佳候选参数设置的索引(
cv_results_
数组)。search.cv_results_['params'][search.best_index_]
处的 dict 给出了最佳模型的参数设置,它给出了最高的平均分数 (search.best_score_
)。对于多指标评估,仅当指定
refit
时才存在。- scorer_:函数或字典
用于保留数据的记分器函数为模型选择最佳参数。
对于多指标评估,此属性包含经过验证的
scoring
dict,它将记分器键映射到记分器可调用。- n_splits_:int
交叉验证拆分(折叠/迭代)的数量。
- refit_time_:浮点数
用于在整个数据集上重新拟合最佳模型的秒数。
仅当
refit
不为 False 时才存在。- multimetric_:bool
记分员是否计算多个指标。
classes_
ndarray 形状 (n_classes,)类标签。
n_features_in_
int拟合期间看到的特征数。
- feature_names_in_:ndarray 形状(
n_features_in_
,) 拟合期间看到的特征名称。仅在定义了
best_estimator_
时才定义(有关更多详细信息,请参阅refit
参数的文档)并且best_estimator_
在适合时公开feature_names_in_
。
参数:
属性:
注意:
选择的参数是那些最大化遗漏数据分数的参数,除非传递了明确的分数,在这种情况下使用它来代替。
如果
n_jobs
设置为大于 1 的值,则会为网格中的每个点复制数据(而不是n_jobs
次)。如果单个作业花费的时间很少,这样做是出于效率原因,但如果数据集很大并且没有足够的内存可用,则可能会引发错误。在这种情况下,一种解决方法是设置pre_dispatch
。然后,内存只复制pre_dispatch
多次。pre_dispatch
的合理值为2 * n_jobs
。例子:
>>> from sklearn import svm, datasets >>> from sklearn.model_selection import GridSearchCV >>> iris = datasets.load_iris() >>> parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]} >>> svc = svm.SVC() >>> clf = GridSearchCV(svc, parameters) >>> clf.fit(iris.data, iris.target) GridSearchCV(estimator=SVC(), param_grid={'C': [1, 10], 'kernel': ('linear', 'rbf')}) >>> sorted(clf.cv_results_.keys()) ['mean_fit_time', 'mean_score_time', 'mean_test_score',... 'param_C', 'param_kernel', 'params',... 'rank_test_score', 'split0_test_score',... 'split2_test_score', ... 'std_fit_time', 'std_score_time', 'std_test_score']
相关用法
- Python sklearn GradientBoostingRegressor用法及代码示例
- Python sklearn GroupShuffleSplit用法及代码示例
- Python sklearn GraphicalLassoCV用法及代码示例
- Python sklearn GroupKFold用法及代码示例
- Python sklearn GradientBoostingClassifier用法及代码示例
- Python sklearn GraphicalLasso用法及代码示例
- Python sklearn GaussianProcessClassifier用法及代码示例
- Python sklearn GammaRegressor用法及代码示例
- Python sklearn GenericUnivariateSelect用法及代码示例
- Python sklearn GaussianNB用法及代码示例
- Python sklearn GaussianRandomProjection用法及代码示例
- Python sklearn GaussianProcessRegressor用法及代码示例
- Python sklearn GaussianMixture用法及代码示例
- Python sklearn jaccard_score用法及代码示例
- Python sklearn WhiteKernel用法及代码示例
- Python sklearn CalibrationDisplay.from_predictions用法及代码示例
- Python sklearn VotingRegressor用法及代码示例
- Python sklearn gen_batches用法及代码示例
- Python sklearn ExpSineSquared用法及代码示例
- Python sklearn MDS用法及代码示例
- Python sklearn adjusted_rand_score用法及代码示例
- Python sklearn MLPClassifier用法及代码示例
- Python sklearn train_test_split用法及代码示例
- Python sklearn RandomTreesEmbedding用法及代码示例
- Python sklearn log_loss用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.model_selection.GridSearchCV。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。