1.什么是网格搜索(Grid Search)

通常情况下,有很多参数是需要手动指定的(如k-近邻算法中的K值),这种 叫超参数。但是手动过程繁杂,所以需要对模型预设几种超参数组合。每组 超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型。

在代码的执行过程中是一个循环的过程,将每个不同的超参数进行笛卡儿积 组合,生成大量的模型,记录模型每次的准确率值,并找到准确率比较高的 模型。是一种暴力尝试的方法。

2.什么是交叉验证(cross validation)

交叉验证:将拿到的训练数据,分为训练和验证集。以下图为例:将数据分 成4份,其中一份作为验证集。然后经过4次(组)的测试,每次都更换不同的验 证集。即得到4组模型的结果,取平均值作为最终结果。又称4折交叉验证。

我们之前知道数据分为训练集和测试集,但是为了让从训练得到模型结果更 加准确。做以下处理

  • 训练集:训练集+验证集
  • 测试集:测试集
  • 为什么需要交叉验证?
    交叉验证目的:为了让被评估的模型更加准确可信(泛化性更加好)

3.API调用

from sklearn.model_selection import GridSearchCV
gc = GridSearchCV(estimator, param_grid=None,cv=None)
gc.fit(X_train,y_train)
#estimator:估计器对象
#param_grid:估计器参数(dict){“n_neighbors”:[1,3,5]}
#cv:指定几折交叉验证
#n_jobs:指定开启进程数量
#gc.best_score_:在交叉验证中验证的最好结果
#gc,best_estimator_:返回泛化性和准确率比较高的模型
#gc,best_params_:返回最优参数
#gc.cv_results_:每次交叉验证后的验证集准确率结果和训练集准确率结果