网格搜索GridSearchCV参数详细解析

一网格搜索(寻求参数最优的一种方法)

首先为想要调参的参数设定一组候选值,然后网格搜索会穷举各种参数组合,根据设定的评分机制找到最好的那一组设置。

使用:from sklearn.model_selection import GridSearchCV

class sklearn.model_selection.GridSearchCV(estimatorparam_gridscoring=Nonefit_params=Nonen_jobs=1iid=Truerefit=Truecv=Noneverbose=0pre_dispatch=‘2*n_jobs’error_score=’raise’return_train_score=’warn’)

参数:

estimator:scikit-learn分类器接口。需要评分机制score()或者scoring参数设置;

param_grid:参数名称(字符串)作为键的字典以及用作值的参数设置列表(或这样的字典的列表),可以搜索任何参数设置序列;

scoring:字符串,默认值:无;

方法:

decision_function(X):使用找到的最佳参数在估计器上调用decision_function,X:可索引,长度为n_samples;
fit(Xy=Nonegroups=None**fit_params):与所有参数组合运行。
get_params([deep]):获取此分类器的参数。
inverse_transform(Xt)使用找到的最佳参数在分类器上调用inverse_transform。
predict(X)调用使用最佳找到的参数对估计量进行预测,X:可索引,长度为n_samples;
score(Xy=None)返回给定数据上的分数,X: [n_samples,n_features]输入数据,其中n_samples是样本的数量,n_features是要素的数量。y: [n_samples]或[n_samples,n_output],可选,相对于X进行分类或回归; 无无监督学习。

属性:

cv_results_ :将键作为列标题和值作为列的字典,可将其导入到pandas DataFrame中。

best_estimator_ : estimator或dict;由搜索选择的估算器,即在左侧数据上给出最高分数(或者如果指定最小损失)的估算器。 如果refit = False,则不可用。

best_params_ : dict;在保持数据上给出最佳结果的参数设置。对于多度量评估,只有在指定了重新指定的情况下才会出现。

best_score_ : float;best_estimator的平均交叉验证分数,对于多度量评估,只有在指定了重新指定的情况下才会出现。

n_splits:整数,交叉验证拆分的数量(折叠/迭代)。

参考http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV

二交叉验证

数据分类采用交叉验证的方法,K次交叉检验的大致思想是将数据大致分为K个子样本,每次取一个样本作为验证数据,取余下的K-1个样本作为训练数据。

KFold()

StratifiedKFold():k折数据按照百分比划分数据集,更加合理。

from sklearn.model_selection import StratifiedKFold

import numpy as np

X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])

y = np.array([0, 0, 1, 1])

skf = StratifiedKFold(n_splits=2)

for train_index, test_index in skf.split(X, y):

print("TRAIN:", train_index, "TEST:", test_index)

X_train, X_test = X[train_index], X[test_index]

y_train, y_test = y[train_index], y[test_index]

你可能感兴趣的:(sklearn)