机器学习中的参数调整

总第102篇

前言

我们知道每个模型都有很多参数是可以调节的,比如SVM中使用什么样的核函数以及C值的大小,决策树中树的深度等。在特征选好、基础模型选好以后我们可以通过调整模型的这些参数来提高模型准确率。每个模型有很多参数,而每个参数又有很多不同的取值,我们该怎么调,最简单的一个方法就是一个一个试。sklearn中提供了这样的库代替了我们手动去试的过程,就是GridSearchCV,他会自己组合不同参数的取值,然后输出效果最好的一组参数。

GridSearchCV参数解释

GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, \
             n_jobs=1, iid=True, refit=True, cv=None, \
             verbose=0, pre_dispatch=‘2*n_jobs’, error_score=’raise’, \
             return_train_score=’warn’)

estimator:所使用的基础模型,比如svc param_grid:是所需要的调整的参数,以字典或列表的形式表示 scoring:准确率评判标准 n_jobs:并行运算数量(核的数量 ),默认为1,如果设置为-1,则表示将电脑中的cpu全部用上 iid:假设数据在每个cv(折叠)中是相同分布的,损失最小化是每个样本的总损失,而不是折叠中的平均损失。 refit:默认为True,程序将会以交叉验证训练集得到的最佳参数,重新对所有可用的训练集与开发集进行,作为最终用于性能评估的最佳模型参数。 cv:交叉验证折叠数,默认是3,当estimator是分类器时默认使用StratifiedKFold交叉方法,其他问题则默认使用KFold verbose:日志冗长度,int类型,0:不输出训练过程,1:偶尔输出,>1:对每个子模型都输出 pre_dispatch:控制job数量,避免job过多出现内存错误

GridSearchCV对象

cv_results_:用来输出cv结果的,可以是字典形式也可以是numpy形式,还可以转换成DataFrame格式 best_estimator_:通过搜索参数得到的最好的估计器,当参数refit=False时该对象不可用 best_score_:float类型,输出最好的成绩 best_params_:通过网格搜索得到的score最好对应的参数

GridSearchCV方法

decision_function(X):返回决策函数值(比如svm中的决策距离) predict_proba(X):返回每个类别的概率值(有几类就返回几列值) predict(X):返回预测结果值(0/1) score(X, y=None):返回函数 get_params(deep=True):返回估计器的参数 fit(X,y=None,groups=None,fit_params):在数据集上运行所有的参数组合 transform(X):在X上使用训练好的参数

GridSearchCV实例

from sklearn import svm, datasets
from sklearn.model_selection import GridSearchCV
iris = datasets.load_iris()
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
svc = svm.SVC()
clf = GridSearchCV(svc, parameters)
clf.fit(iris.data, iris.target)
------------------------------------------------------
GridSearchCV(cv=None, error_score='raise',
       estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False),
       fit_params={}, iid=True, n_jobs=1,
       param_grid={'kernel': ('linear', 'rbf'), 'C': [1, 10]},
       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,
       scoring=None, verbose=0)

clf.cv_results_

我们可以看到,cv_result一共有四组,这正是两个kernel和两个C的随机组合成四组。

clf.best_estimator_

clf.best_params_

clf.best_params_

注:本方法只适用于数据量较小的模型,不适合数据量过大的模型。

原文发布于微信公众号 - 张俊红(zhangjunhong0428)

原文发表时间:2018-04-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏书山有路勤为径

Batch Normalization怎么加入batch normalization

Batch Normalization 会使你的参数搜索问题变得很容易,使神经网络对超参数的选择更加稳定,超参数的范围会更加庞大,工作效果也很好,也会使你的训练...

9820
来自专栏游戏开发那些事

【小白学游戏常用算法】一、随机迷宫算法

  现在的很多游戏中的地图一般采用格子的方式,虽然在表面地图上无法看到实际的格子,但是在地图的结构中专门有一个逻辑层,这个层和地图大小相等,划出很多小的格子,然...

17420
来自专栏AILearning

sklearn 快速入门 - 0.18 中文翻译

对机器学习问题的简要介绍,以及如何使用scikit-learn来解决这些问题。介绍基本概念和惯例。 原文链接 : http://scikit-learn....

210100
来自专栏机器学习算法与Python学习

Torch7模型训练

Torch7搭建卷积神经网络详细教程已经详细的介绍啦Module模块,这里再次基础上再给出一些上Container、 Transfer Functions La...

404130
来自专栏数据科学学习手札

(数据科学学习手札25)sklearn中的特征选择相关功能

一、简介   在现实的机器学习任务中,自变量往往数量众多,且类型可能由连续型(continuou)和离散型(discrete)混杂组成,因此出于节约计算成本、精...

52690
来自专栏懒人开发

(10.4)James Stewart Calculus 5th Edition:Areas and Lengths in Polar Coordinates

极坐标系中的面积和长度 (这里看见 Coordinates ,就想到了 CoordiateLayout _ ) 我们简单要求一个圆的部分面积

11620
来自专栏编程

图像处理基础

作者简介 本文来自鲍骞月的投稿,主要讲解图像处理基础,欢迎大家积极留言,提出你的疑问或者建议,与投稿小伙伴交流。 GitHub地址:https://github...

23960
来自专栏null的专栏

简单易学的机器学习算法——Rosenblatt感知机的对偶解法

一、Rosenblatt感知机回顾    image.png 二、Rosenblatt感知机的对偶形式    image.png 三、算法流程 image....

39050
来自专栏PaddlePaddle

【序列到序列学习】使用Scheduled Sampling改善翻译质量

生成古诗词 序列到序列学习实现两个甚至是多个不定长模型之间的映射,有着广泛的应用,包括:机器翻译、智能对话与问答、广告创意语料生成、自动编码(如金融画像编码)...

1.3K50
来自专栏AILearning

【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习 | ApacheCN

使用 scikit-learn 介绍机器学习 | ApacheCN 内容提要 在本节中,我们介绍一些在使用 scikit-learn 过程中用到的 机器...

43690

扫码关注云+社区

领取腾讯云代金券