Python每日一记22>>>网格搜索
“不要说你做什么事是为了别人,其实都是为了你自己,任何你所做的事都会以某种方式回到你自己的能量环内,无论是好还是坏”
之前介绍了交叉验证,交叉验证是综合评估模型泛化能力的方法,相对于仅仅将数据集划分为训练集和测试集而言,其更加具有普遍性。
为了继续优化模型的泛化能力,我们需要更深入的调参步骤。
我们知道,大部分的模型依赖于参数的调节达到模型更好的得分结果,但是频繁的调参是一个艰巨的任务,而且有可能费力不讨好,那么网格搜索将会大大减轻我们的负担,所谓网格搜索,就是将参数按照网格的形式排列,再利用循环进行一一建模,得到模型的最佳得分和对应的最佳参数,如SVC(高斯内核)需要参数gmma和C参数,我们可以设定好想要的参数,并进行循环一一验证,当然我们需要两个for循环即可,对于简单的网格搜索就不再给出代码啦,就是简单的两个循环即可。
如果我们只是对单一的训练集和测试集进行网格搜索,就会又陷入之前的模型泛化能力不佳的情况,还记得我们解决的方式是交叉验证,为了结合交叉验证的方法,我们也可以将交叉验证加入到网格搜索中,这就是带交叉验证的网格搜索:
for gamma in [ ]:#列表中需自行设定需要选择的参数大小
for C in [ ]:
svm=SVC(gamma=gamma,C=C)
scores=cross_val_score(svm,x,y,cv=5) #加入交叉验证
score=np.mean(scores)
if score>bestscore:
bestscore=score
bestpar={‘C’:C,‘gamma’:gamma}
然后我们就可以按照最佳参数去构建模型啦!
梳理上述代码,我们发现其实就是在循环中加入了交叉验证算法而已,那如果仅仅是这样的话,python就不会是最简单的语言啦,没错,python提供了更加简单的方法进行交叉验证网格搜索,那就是GridSearchCV 类,下面我们用酒数据集和套索回归看一下具体的代码:
完蛋了,运行错误,TypeError: get_params() missing 1 required positional argument: 'self’
找了很久都没有找到方法,这是类实例化出现的问题,具体的内容我也搞不清楚,大家可自行去学习
解决的方法是grid_search=GridSearchCV(Lasso(),params,cv=6),,,Lasso()一定要有括号!!!
我们得到了上面的结果,比自己进行循环要方便很多。
更方便的是,我们可以直接得到估计模型,和预测结果,至此我们发现,其实GridSearchCV 是一个很好的类,其不仅将交叉验证和网格搜索进行结合,还直接将最优的模型保存,因此可以进行直接预测,而不是再依据最佳参数去拟合模型。
最后需要指出的是GridSearchCV 还有一个best_score_属性,这个是交叉验证的最高得分,而不是上面的grid_search.score(x_test,y_test))的得分,这个是我们最优模型下,对测试集的拟合得分,从另一个角度来说,我们不需要再在乎交叉验证的最高得分,我们只需要在乎在交叉验证和网格搜索后,拟合的最佳模型并运用这个模型进行预测即可。
更多方法和属性如下图,或自行去百度哦。
小知识:pycharm中调用函数方法自动补全p,m,c,v,f分别是什么意思?
摘自:https://blog.csdn.net/WBerica/article/details/82753575
- Python机器学习库sklearn网格搜索与交叉验证
- 【每日一记3.16】python学习记录3----字典,列表,元组
- Python每日一记26>>>自定义相关系数计算
- Python 每日一记31>>>相关性矩阵建立
- Python每日一记36>>>机器学习实战遇到的问题
- Keras/Python深度学习中的网格搜索超参数调优(附源码)
- Python每日一记29>>>列表与元组
- Python每日一记38>>>pandas相关小问题
- Python每日一记23>>>分类模型的可信度评估
- [每日一记] Python报错 综述
- 时间序列预测基础教程系列(15)_如何网格搜索ARIMA模型超参数(Python)
- Python每日一记
- [每日一记] Python报错 IndentationError: unexpected indent
- Python 每日一记34>>>pandas多条件筛选,写多sheet的excel
- Python每日一记41>>>groupby 和flatten使用
- Python 每日一记32>>>for/while循环与if结构
- ×××××#######Keras/Python深度学习中的网格搜索超参数调优(附源码)(译文)+++++++
- python 中bayes模型超参数并行网格搜索 程序分析
- python:并行化网格搜索中ImportError: [joblib] Attempting to do parallel computing without protecting...
- 数据标准化+网格搜索+交叉验证+预测(Python)