sklearn中的LogisticRegression

2023-11-12

sklearn中的逻辑回归接口如下:

sklearn.linear_model.LogisticRegression(penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)

模型参数

此处只列举重要的超参数,部分参数大部分情况下直接使用默认值即可。

参数 说明
penalty 正则化参数,三种取值:{‘l1’, ‘l2’, ‘elasticnet’, ‘none’}, default=’l2’
C 正则强度的倒数;必须为正浮点数。与支持向量机一样,较小的值指定更强的正则化。
class_weight 样本权重,可以是一个字典或者’balanced’字符串,默认为None。
对于二分类模型,可以这样指定权重:class_weight={0:0.9,1:0.1}
当class_weight=‘balanced’,那么类库会根据训练样本量来计算权重。某种类型样本量越多,则权重越低,样本量越少,则权重越高。
solver 优化算法选择参数,五种取值:newton-cg,lbfgs,liblinear,sag,saga。default = liblinear。
liblinear适用于小数据集,而sag和saga适用于大数据集因为速度更快。
如果是L2正则化,那么4种可选的算法{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}都可以选择。但是如果penalty是L1正则化的话,就只能选择‘liblinear’了。
multi_class 分类方式选择参数,可选参数为ovr和multinomial,default = ovr。
MvM分类相对精确,但是分类速度没有OvR快
如果选择了ovr,则4种损失函数的优化方法liblinear,newton-cg,lbfgs和sag都可以选择。如果选择了multinomial,则只能选择newton-cg, lbfgs和sag了
verbose 日志冗长度,int类型。默认为0。就是不输出训练过程,1的时候偶尔输出结果,大于1,对于每个子模型都输出。
warm_start 热启动参数,bool类型。默认为False。如果为True,则下一次训练是以追加树的形式进行(重新使用上一次的调用作为初始化)。
n_jobs 并行数。int类型,默认为1。1的时候,用CPU的一个内核运行程序,2的时候,用CPU的2个内核运行程序。为-1的时候,用所有CPU的内核运行程序。
tol 停止求解的标准,float类型,默认为1e-4。就是求解到多少的时候,停止,认为已经求出最优解。
fit_intercept 是否存在截距或偏差,bool类型,默认为True。
intercept_scaling 当solver= ‘liblinear’且fit_intercept=True时有用,
max_iter 算法收敛的最大迭代次数,即求取损失函数最小值的迭代次数,默认是100,
dual 默认dual=False,用来指明是否将原问题改成他的对偶问题,对偶问题可以理解成相反问题,比如原问题是求解最大值的线性规划,那么他的对偶问题就是转化为求解最小值的线性规划,适用于样本较小的数据集,因样本小时,计算复杂度较低。

说明:

(1)参数penalty的三种正则化,分别对应如下的数学原理:

ℓ 2 \ell_2 2正则化: min ⁡ w , c 1 2 w T w + C ∑ i = 1 n log ⁡ ( exp ⁡ ( − y i ( X i T w + c ) ) + 1 ) . \min_{w, c} \frac{1}{2}w^T w + C \sum_{i=1}^n \log(\exp(- y_i (X_i^T w + c)) + 1) . minw,c21wTw+Ci=1nlog(exp(yi(XiTw+c))+1).

ℓ 1 \ell_1 1正则化: min ⁡ w , c   ∣ w   ∣ 1 + C   s u m i = 1 n log ⁡ (   e x p ( − y i ( X i T w + c ) ) + 1 ) \min_ {w,c} \ | w \ | _1 + C \ sum_ {i = 1} ^ n \log(\ exp(-y_i(X_i ^ T w + c))+ 1) minwc w 1+C sumi=1nlog expyiXiTw+c+1

Elastic-Net正则化: min ⁡ w , c 1 −   r h o 2 w T w + ρ ∥ w   ∣ 1 + C ∑ i = 1 n log ⁡ ( exp ⁡ ( − y i ( X i T w + c ) ) + 1 ) \min_ {w,c} \frac {1-\ rho} {2} w ^ T w + \rho \| w \ | _1 + C \sum_ {i = 1} ^ n \log(\exp(-y_i (X_i ^ T w + c))+ 1) minwc21 rhowTw+ρw 1+Ci=1nlogexpyiXiTw+c+1

(2)class_weight作用:

在诈骗电话与正常电话的分类模型中,将诈骗电话归为正常电话的代价很高,我们宁愿选择将正常电话归为诈骗电话,然后在做处理,这时,我们可以提高诈骗电话的权重。还有一种情况是解决样本极度不平衡问题。

(3)solver的五种取值:

liblinear:坐标轴下降法来迭代优化损失函数。
lbfgs:利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。
newton:利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。
sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候。
saga:线性收敛的随机优化算法的的变重。

如果是L2正则化,那么4种可选的算法{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}都可以选择。但是如果penalty是L1正则化的话,就只能选择‘liblinear’了。这是因为L1正则化的损失函数不是连续可导的,而{‘newton-cg’, ‘lbfgs’,‘sag’}这三种优化算法时都需要损失函数的一阶或者二阶连续导数。而‘liblinear’并没有这个依赖。

在这里插入图片描述

模型方法

方法 说明
fit(X, y, sample_weight=None) 拟合模型,用来训练LR分类器,其中X是训练样本,y是对应的标记向量
predict(X) 用来预测样本,也就是分类,X是测试集。返回array。
predict_proba(X) 输出分类概率。返回每种类别的概率,按照分类类别顺序给出。如果是多分类问题,multi_class=“multinomial”,则会给出样本对于每种类别的概率。
score(X, y, sample_weight=None) 返回给定测试集合的平均准确率(mean accuracy),浮点型数值。 对于多个分类返回,则返回每个类别的准确率组成的哈希矩阵。R^2评估模型

模型的训练结果

参数 说明
classes_ 分类器类别标签列表。
coef_ 决策函数中要素的系数。shape=(1,n_features)或(n_classes,n_features)
intercept_** 决策函数的截距。shape(1,)或ndarray(n_classes,)

实例

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris

# 初始化模型,使用默认的超参数
clf = LogisticRegression()
# 输入训练数据
clf.fit(X,y)

clf.predict(X[:2, :])
# 输出:array([0, 0])

clf.predict_proba(X[:2, :])
# 输出:array([[9.81797141e-01, 1.82028445e-02, 1.44269293e-08],
#       [9.71725476e-01, 2.82744937e-02, 3.01659208e-08]])

逻辑回归调参比较重要的参数是solver和penalty。

举例:数据量比较少,特征数比较多的情况下,可以使用以下的参数:

 clf = LogisticRegression(solver='liblinear',penalty='l1',n_jobs=-1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sklearn中的LogisticRegression 的相关文章

随机推荐

  • 指针和数组笔试题解析【下篇】

    文章目录 6 指针笔试题 6 1 试题 1 6 2 试题 2 6 3 试题 3 6 4 试题 4 6 5 试题 5 6 6 试题 6 6 7 试题 7 6 8 试题 8 6 指针笔试题 6 1 试题 1 下面代码输出的结果是什么 int m
  • 数学建模国赛论文latex代码汇总

    目录 一 写在前面的话 二 latex环境安装和编辑器的选择 三 基础配置 写作环境 中文支持 页面设置 分级目录 四 数学公式 方程 矩阵编写与特殊符号的输入 五 三线表的输入 六 图片和参考文献的插入 七 最后附上完整配置代码 一 写在
  • Java的jdk安装教程:

    一 jdk安装流程 1 从官网下载jdk https www oracle com java technologies downloads 2 进入官网 3 选择需要的版本 4 下载后 双击安装 二 配置环境变量 1 桌面右键计算机点击属性
  • 利用Audacity软件分析ctf音频隐写

    分析音频得到摩斯电码 看波的宽度分辨长短音 比较细的就是短音 代表 比较粗的就是长音 代表 中间的间隔就是 得到摩斯电码
  • unity点击场景内物体进行交互

    提示 本文展示点击事件 另有其他自行研究 前言 一 原理 二 使用步骤 1 使用前提 2 使用脚本 总结 前言 很多情况下我们需要对场景内的物体进行交互 今天我们采用射线检测的方法进行点击 例如 点击场景内的Cube 进行开始旋转 提示 以
  • 宏DECLARE_DYNCREATE与DECLARE_DYNAMIC

    一 作用 DECLARE DYNCREATE的主要作用 支持对象的动态创建 使用 DECLARE DYNCREATE 宏声明的类可以在运行时动态创建对象 支持对象的序列化 MFC框架提供了对象的序列化支持 允许将对象的状态保存到磁盘 序列化
  • VS2010编译QT4.8.4遇到“LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 “问题

    在用VS编译qt时候很少有人遇到如上所示问题 因此当我遇到时很不幸的找不到对应的解决办法 相关的国内外网站资料没有少折腾可都不行 还有的说修改项目属性 但这种方法只适合对具体的项目就行修改 在编译qt的时候就丈二和尚摸不着头脑 下面就介绍一
  • 分页显示该休矣

    当你有很多东西要显示给用户 而且内容多得远非一个屏幕可以放得下的时候 你会怎么办 很自然 你会想到分页 在2007年 Vitaly Friedman写了一篇文章叫 Pagination Gallery ExamplesAnd Good Pr
  • 【android】数据库升级完整解决方案

    作者 飞翔的猫咪 http flyingcat2013 blog 51cto com 7061638 1537074 原创作品 允许转载 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http flyin
  • 如何计算c++中开数组中占的内存

    如何计算c 中开数组中占的内存 引入 在比赛中一般都会有数组的身影 但是比赛时内存是一定的 若是操作不当 那么正解也会被数组而拖累 可是如何确保自己的数组占的内存的呢 首先要知道你自己开数组是的类型是不一样的内存的 也就是说类型不一样 内存
  • Android Studio操作SQLite数据库简要示例

    Android Studio操作SQLite数据库 主要分三步 1 创建数据库及数据表 2 写数据库表 3 读数据库表 下面用例子进行介绍 我们做一个简单的登记用户名及电话号码并进行显示的例子 首先创建EmptyActivity工程Test
  • [深入研究4G/5G/6G专题-34]: URLLC-5-《中国联通5G URLLC技术白皮书3.0版本》解读-1-业务场景

    目录 第1章 背景与URLLC的发展历程 1 1 URLLC的应用场景 1 2 URLLC的业务特点 第2章 URLLC的业务需求
  • 南京邮电大学操作系统复试

    目录 第 1 章 计算机系统概述 多道运行的特征 第 2 章 进程与线程 2 1 进程与线程 1 进程与程序 2 PID Process ID 进程ID 3 PCB Process Control Block 进程控制快 4 进程的特征 5
  • 【NAS工具箱】Pytorch中的Buffer

    Parameter 模型中的一种可以被反向传播更新的参数 第一种 直接通过成员变量nn Parameter 进行创建 会自动注册到parameter中 def init self super MyModel self init self p
  • 垃圾收集器知识点4:Java中垃圾收集器的实现

    目录 java8垃圾收集器组合一览 serial GC 串行GC 的实现 串行gc日志分析 Minor GC 小型GC Full GC 完全GC Parallel GC 并行GC 的实现 并行GC日志分析 Minor GC 小型GC Ful
  • 第二十九章、containers容器类部件QFrame框架部件详解

    一 概述 容器部件就是可以在部件内放置其他部件的部件 在Qt Designer中可以使用的容器部件有如下 容器中的Frame为一个矩形的框架对象 对应类QFrame QFrame类是PyQt中带框架部件的所有类的基类 如菜单 进度条 Lab
  • SQLServer 数据加密解密:常用的加密解密(一)

    都是基本示例 更多参考官方文档 1 Transact SQL 函数 2 数据库密钥 3 证书 4 非对称密钥 5 对称密钥 sql view plain copy drop table EnryptTest create table Enr
  • Win10 WSL运行docker报错:Cannot connect to the Docker daemon at unix:///var/run/docker.sock.

    我安装的子系统是Ubuntu 1804 安装docker步骤如下 sudo apt update 更新软件源 sudo apt install y docker io 安装docker sudo usermod aG docker leo
  • 3个技术男搞恋爱版ChatGPT,估值10亿美元

    过去几个月 我们见证了GPT从3 5到4 0 从只能做结构化搜索整合到接近人类思维的对话 我们还看到了 GPT逐步掌握画画 写作 剪辑 制表 做 PPT 等技能 最可怕的是AI的迭代速度 简直是一天一个样 这股这股前所未有的技术浪潮 一时间
  • sklearn中的LogisticRegression

    sklearn中的逻辑回归接口如下 sklearn linear model LogisticRegression penalty l2 dual False tol 0 0001 C 1 0 fit intercept True inte