与回归有关的主要有三个类,分别是:LogisticRegression, LogisticRegressionCV 和logistic_regression_path。

其中LogisticRegression和LogisticRegressionCV的主要区别是LogisticRegressionCV使用了交叉验证来选择正则化系数C。而LogisticRegression需要自己每次指定一个正则化系数。除了交叉验证,以及选择正则化系数C以外, LogisticRegression和LogisticRegressionCV的使用方法基本相同。ogistic_regression_path类则比较特殊,它拟合数据后,不能直接来做预测,只能为拟合数据选择合适逻辑回归的系数和正则化系数。主要是用在模型选择的时候。一般情况用不到这个类。

1、正则化选择参数:penalty

penalty参数可选择的值为"l1"和"l2".分别对应L1的正则化和L2的正则化,默认是L2的正则化。但是如果选择L2正则化发现还是过拟合,即预测效果差的时候,就可以考虑L1正则化。另外,如果模型的特征非常多,我们希望一些不重要的特征系数归零,从而让模型系数稀疏化的话,也可以使用L1正则化。

2、优化算法选择参数:solver

solver参数决定了我们对逻辑回归损失函数的优化方法,有4种算法可以选择,分别是:

a) liblinear:使用了开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数。

b) lbfgs:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。

c) newton-cg:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。

d) sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候。

newton-cg, lbfgs和sag这三种优化算法时都需要损失函数的一阶或者二阶连续导数,因此不能用于没有连续导数的L1正则化,只能用于L2正则化。而liblinear通吃L1正则化和L2正则化。

sag每次仅仅使用了部分样本进行梯度迭代,所以当样本量少的时候不要选择它,而如果样本量非常大,比如大于10万,sag是第一选择。

对于多元逻辑回归常见的有one-vs-rest(OvR)和many-vs-many(MvM)两种。而MvM一般比OvR分类相对准确一些。但是liblinear只支持OvR,不支持MvM,这样如果我们需要相对精确的多元逻辑回归时,就不能选择liblinear了。也意味着如果我们需要相对精确的多元逻辑回归不能使用L1正则化了。

3、分类方式选择参数:multi_class

有 ovr和multinomial(即MvM)两个值可以选择,默认是 ovr。

如果是二元逻辑回归,ovr和multinomial并没有任何区别,区别主要在多元逻辑回归上。

ovr具体做法是,对于第K类的分类决策,我们把所有第K类的样本作为正例,除了第K类样本以外的所有样本都作为负例,然后在上面做二元逻辑回归,得到第K类的分类模型。

MvM则相对复杂。OvR相对简单,但分类效果相对略差(这里指大多数样本分布情况,某些样本分布下OvR可能更好)。而MvM分类相对精确,但是分类速度没有OvR快。

如果选择了ovr,则4种损失函数的优化方法都可以选择。但是如果选择了multinomial,则只能选择newton-cg, lbfgs和sag了。

4、类型权重参数: class_weight

lass_weight参数用于标示分类模型中各种类型的权重,可以不输入,即不考虑权重,可以选择balanced让类库自己计算类型权重,或者我们自己输入各个类型的权重。

5、样本权重参数: sample_weight

调节样本权重的方法有两种,第一种是在class_weight使用balanced。第二种是在调用fit函数时,通过sample_weight来自己调节每个样本权重。如果上面两种方法都用到了,那么样本的真正权重是class_weight*sample_weight。

还有些参数比如正则化参数C(交叉验证就是 Cs),迭代次数max_iter等,由于和其它的算法类库并没有特别不同

scikit-learn回归类库使用相关推荐

  1. Scikit Learn: 在python中机器学习

    Warning 警告:有些没能理解的句子,我以自己的理解意译. 翻译自:Scikit Learn:Machine Learning in Python 作者: Fabian Pedregosa, Ga ...

  2. [转载]Scikit Learn: 在python中机器学习

    原址:http://my.oschina.net/u/175377/blog/84420 目录[-] Scikit Learn: 在python中机器学习 载入示例数据 一个改变数据集大小的示例:数码 ...

  3. scikit - learn 做文本分类

    文章来源: https://my.oschina.net/u/175377/blog/84420 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的句子,我以自 ...

  4. scikit-learn 逻辑回归类库使用小结

    之前在逻辑回归原理小结这篇文章中,对逻辑回归的原理做了小结.这里接着对scikit-learn中逻辑回归类库的我的使用经验做一个总结.重点讲述调参中要注意的事项. 1. 概述 在scikit-lear ...

  5. 机器学习与Scikit Learn学习库

    摘要: 本文介绍机器学习相关的学习库Scikit Learn,包含其安装及具体识别手写体数字案例,适合机器学习初学者入门Scikit Learn. 在我科研的时候,机器学习(ML)是计算机科学领域中最 ...

  6. scikit_learn逻辑回归类库

    来自:刘建平 1.概述 在scikit-learn中,与逻辑回归有关的主要有3个类.LogisticRegression, LogisticRegressionCV 和 logistic_regres ...

  7. python笔迹识别_python_基于Scikit learn库中KNN,SVM算法的笔迹识别

    之前我们用自己写KNN算法[网址]识别了MNIST手写识别数据 [数据下载地址] 这里介绍,如何运用Scikit learn库中的KNN,SVM算法进行笔迹识别. 数据说明: 数据共有785列,第一列 ...

  8. 【scikit-learn】如何用Python和SciKit Learn 0.18实现神经网络

    本教程的代码和数据来自于 Springboard 的博客教程.本文的作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:https://g ...

  9. python scikit learn 关闭开源_scikit learn 里没有神经网络?

    本教程的代码和数据来自于 Springboard 的博客教程,希望能为你提供帮助.作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:ht ...

  10. scikit learn各个常用模型调参总结

    SVM 对数据进行归一化 (simple scaling) 使用RBF kernel 使用cross_validation 和 grid_search得到最佳参数gamma和C 使用得到的最优C和ga ...

最新文章

  1. 爱彼迎JavaScript 风格指南
  2. 基于JavaScript实现配对游戏
  3. python预测实例教程_手把手教你用Python库Keras做预测(附代码)-阿里云开发者社区...
  4. 【干货】腾讯员工职业发展框架.pdf(附下载链接)
  5. 在Windows Server 2016和SQL Server Always On可用性组上安装SQL Server 2019
  6. 2017 Multi-University Training Contest - Team 5:1001. Rikka with Candies(手写bitset)
  7. struts2 学习01
  8. Eova项目嵌入前端页面介绍
  9. exe打包工具,封装exe安装程序--Inno Setup
  10. SCI 论文缩写使用心得
  11. 高压油管matlab,高压油管的压力及流量控制
  12. python hist2d_Matplotlib(hist2D)中的2D直方图是如何工作的?
  13. phalcon index.php,phalcon简易指南
  14. linux中dd命令写入数据,Linux中dd命令的用法
  15. 计算机二级工作表不会,计算机二级Office:Excel工作簿与工作表操作
  16. Codeforces 1146G Zoning Restrictions dp
  17. android obb分包,Unity 出OBB分包 和 安装
  18. 读Java核心技术36讲有感——谈谈对Java的理解,谈谈Exception和Error
  19. 大数据先驱Cloudera拥抱云计算,探索后Hadoop时代的下一代数据平台
  20. 面包板入门--点亮LED

热门文章

  1. 2019UI设计岗位最常见的面试题
  2. 端口输出报错**Error** test5.ASM(60) Constant too large
  3. 瑞幸的“快”与连咖啡的“慢”
  4. 软件测试工程师面试题之操作系统
  5. 弗兰克赫兹实验计算机仿真实验报告,大学物理实验教学大纲
  6. 统计学习导论之R语言应用(二):R语言基础
  7. QQ2010登录协议分析-目前可取得sessionkey
  8. SOLO代码踩过的各种坑
  9. 一个是阆苑仙葩,一个是美玉无瑕
  10. php open_basedir绕过,PHP绕过open_basedir列目录的研究