十、用scikit-learn的网格搜索快速找到最优模型参数
来源:互联网 发布:张馨予的淘宝店铺名字 编辑:程序博客网 时间:2024/06/06 12:28
任何一种机器学习模型都附带很多参数,不同场景对应不同的最佳参数,手工尝试各种参数无疑浪费很多时间,scikit-learn帮我们实现了自动化,那就是网格搜索
请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址
网格搜索
这里的网格指的是不同参数不同取值交叉后形成的一个多维网格空间。比如参数a可以取1、2,参数b可以取3、4,参数c可以取5、6,那么形成的多维网格空间就是:
1、3、51、3、61、4、51、4、62、3、52、3、62、4、52、4、6
一共2*2*2=8种情况
网格搜索就是遍历这8种情况进行模型训练和验证,最终选择出效果最优的参数组合
用法举例
# coding:utf-8import sysreload(sys)sys.setdefaultencoding( "utf-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]))
请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址
执行结果如下:
Fitting 3 folds for each of 2 candidates, totalling 6 fits[Parallel(n_jobs=-1)]: Done 7 out of 6 | elapsed: 0.0s remaining: -0.0s[Parallel(n_jobs=-1)]: Done 7 out of 6 | elapsed: 0.1s remaining: -0.0s[Parallel(n_jobs=-1)]: Done 7 out of 6 | elapsed: 0.1s remaining: -0.0s[Parallel(n_jobs=-1)]: Done 7 out of 6 | elapsed: 0.1s remaining: -0.0s[Parallel(n_jobs=-1)]: Done 7 out of 6 | elapsed: 0.1s remaining: -0.0s[Parallel(n_jobs=-1)]: Done 6 out of 6 | elapsed: 0.1s finished最佳效果: 0.800最优参数组合: vect__max_features: 3
这里面并行启动了6个任务,最终判断出max_features的最优解值是3
0 0
- 十、用scikit-learn的网格搜索快速找到最优模型参数
- 机器学习精简教程之九——用scikit-learn的网格搜索快速找到最优模型参数
- scikit-learn的栅格搜索最优参数
- 【scikit-learn】网格搜索来进行高效的参数调优
- scikit-learn进行模型参数的选择
- 【scikit-learn】如何进行模型参数的选择
- 【scikit-learn】如何进行模型参数的选择
- scikit-learn:构建文本分类的“pipeline”简化分类过程、网格搜索调参
- scikit-learn:0.4.构建文本分类的“pipeline”简化分类过程、网格搜索调参
- 【scikit-learn】scikit-learn的线性回归模型
- 【scikit-learn】scikit-learn的线性回归模型
- 【scikit-learn】scikit-learn的线性回归模型
- 用scikit-learn的joblib保存训练模型
- scikit-learn学习3.2.Grid Search:搜索估计器的参数
- 用scikit-learn学习LDA主题模型
- 【scikit-learn】交叉验证及其用于参数选择、模型选择、特征选择的例子
- 【scikit-learn】交叉验证及其用于参数选择、模型选择、特征选择的例子
- 【scikit-learn】交叉验证及其用于参数选择、模型选择、特征选择的例子
- 记录Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > 的解决方法
- 七、用随机梯度下降法(SGD)做线性拟合
- 八、用scikit-learn做特征提取
- 九、二元分类效果的评估方法
- Pandas读取MySQL数据到DataFrame
- 十、用scikit-learn的网格搜索快速找到最优模型参数
- Android ViewPager 页面生成缓冲保留
- Tensorflow 数据预读取--Queue
- HDU 3652 数位DP变形
- 【JAVA笔记】JAVA后端实现统一扫码支付:微信篇
- PAT A1052. Linked List Sorting (25)
- 深入右值引用,move语义和完美转发
- 十一、用scikit-learn做聚类分析
- PHP 错误处理