机器学习精简教程之九——用scikit-learn的网格搜索快速找到最优模型参数
来源:互联网 发布:社交网络电影图解 编辑:程序博客网 时间:2024/05/29 17:46
本文转自:http://www.shareditor.com/blogshow/?blogId=60
任何一种机器学习模型都附带很多参数,不同场景对应不同的最佳参数,手工尝试各种参数无疑浪费很多时间,scikit-learn帮我们实现了自动化,那就是网格搜索 。
网格搜索
这里的网格指的是不同参数不同取值交叉后形成的一个多维网格空间。比如参数a可以取1、2,参数b可以取3、4,参数c可以取5、6,那么形成的多维网格空间就是1、3、5
1、3、6
1、4、5
1、4、6
2、3、5
2、3、6
2、4、5
2、4、6
一共2*2*2=8种情况
网格搜索就是遍历这8种情况进行模型训练和验证,最终选择出效果最优的参数组合
用法举例
from sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.linear_model.logistic import LogisticRegressionfrom sklearn.grid_search import GridSearchCVfrom sklearn.pipeline import Pipeline# 构造样本,这块得多构造点,不然会报class不足的错误,因为gridsearch会拆分成小组X = []X.append("fuck you")X.append("fuck you all")X.append("hello everyone")X.append("fuck me")X.append("hello boy")X.append("fuck you")X.append("fuck you all")X.append("hello everyone")X.append("fuck me")X.append("hello boy")X.append("fuck you")X.append("fuck you all")X.append("hello everyone")X.append("fuck me")X.append("hello boy")X.append("fuck you")X.append("fuck you all")X.append("hello everyone")X.append("fuck me")X.append("hello boy")X.append("fuck you")X.append("fuck you all")X.append("hello everyone")X.append("fuck me")X.append("hello boy")y = [1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1]# 这是执行的序列,gridsearch是构造多进程顺序执行序列并比较结果# 这里的vect和clf名字自己随便起,但是要和parameters中的前缀对应pipeline = Pipeline([ ('vect', TfidfVectorizer(stop_words='english')), ('clf', LogisticRegression()) ])# 这里面的max_features必须是TfidfVectorizer的参数, 里面的取值就是子进程分别执行所用parameters = { 'vect__max_features': (3, 5), }# accuracy表示按精确度判断最优值grid_search = GridSearchCV(pipeline, parameters, n_jobs = -1, verbose = 1, scoring = 'accuracy', cv = 3)grid_search.fit(X, y)print '最佳效果: %0.3f' % grid_search.best_score_print '最优参数组合: 'best_parameters = grid_search.best_estimator_.get_params()for param_name in sorted(parameters.keys()): print('\t%s: %r' % (param_name, best_parameters[param_name]))
我的输出报错了
阅读全文
0 0
- 机器学习精简教程之九——用scikit-learn的网格搜索快速找到最优模型参数
- 十、用scikit-learn的网格搜索快速找到最优模型参数
- 机器学习精简教程之二——用scikit-learn求解一元线性回归问题
- 机器学习精简教程之三——用scikit-learn求解多元线性回归问题
- 机器学习精简教程之五——用scikit-learn求解多项式回归问题
- 机器学习精简教程之七——用scikit-learn做特征提取
- 机器学习精简教程之十——用scikit-learn做聚类分析
- scikit-learn的栅格搜索最优参数
- 使用scikit-learn进行机器学习(scikit-learn教程1)
- (转)(三)机器学习笔记之Scikit Learn的线性回归模型初探
- 【scikit-learn】网格搜索来进行高效的参数调优
- 使用scikit-learn进行机器学习的简介(教程1)
- 使用scikit-learn进行机器学习的简介(教程1)
- scikit-learn 中文文档-使用 scikit-learn 介绍机器学习-scikit-learn教程|ApacheCN
- 【Python】scikit-learn机器学习(一)——一元回归模型
- 机器学习与scikit-learn(一)——回归模型
- 机器学习与scikit-learn(一)——回归模型
- sklearn学习-SVM例程总结3(网格搜索+交叉验证——寻找最优超参数)
- 使用formdata+ajax文件上传中遇到的问题
- 为什么计算机会有补码这种奇怪的规则?
- objective-C call
- LinkedList源码
- 致tensorflow
- 机器学习精简教程之九——用scikit-learn的网格搜索快速找到最优模型参数
- Android-UI绘制分析01
- Nginx无法启动也不报错
- 安卓 类似美团等菜单的 使用
- HCI CONFIGURATION PARAMETERS
- java web项目性能优化之五花八门
- Base64转换成流
- Wormholes(最短路)
- 一个开源轮播图控件,非常好用