sklearn.linear_model.LogisticRegression()函数解析(最清晰的解释)

发布时间:2026/7/28 18:07:58

sklearn.linear_model.LogisticRegression()函数解析(最清晰的解释)
欢迎关注WX公众号【程序员管小亮】sklearn.linear_model.LogisticRegression()函数全称是Logistic回归aka logitMaxEnt分类器。classsklearn.linear_model.LogisticRegression(penaltyl2,dualFalse,tol0.0001,C1.0,fit_interceptTrue,intercept_scaling1,class_weightNone,random_stateNone,solverlbfgs,max_iter100,multi_classauto,verbose0,warm_startFalse,n_jobsNone,l1_ratioNone)参数penalty惩罚项str类型可选参数为l1和l2默认为l2。用于指定惩罚项中使用的规范。newton-cg、sag和lbfgs求解算法只支持L2规范。L1G规范假设的是模型的参数满足拉普拉斯分布L2假设的模型参数满足高斯分布所谓的范式就是加上对参数的约束使得模型更不会过拟合(overfit)但是如果要说是不是加了约束就会好这个没有人能回答只能说加约束的情况下理论上应该可以获得泛化能力更强的结果。dual对偶或原始方法bool类型默认为False。对偶方法只用在求解线性多核(liblinear)的L2惩罚项上。当样本数量样本特征的时候dual通常设置为False。tol停止求解的标准float类型默认为1e-4。就是求解到多少的时候停止认为已经求出最优解。c正则化系数λ的倒数float类型默认为1.0。必须是正浮点型数。像SVM一样越小的数值表示越强的正则化。fit_intercept是否存在截距或偏差bool类型默认为True。intercept_scaling仅在正则化项为”liblinear”且fit_intercept设置为True时有用。float类型默认为1。class_weight用于标示分类模型中各种类型的权重可以是一个字典或者balanced字符串默认为不输入也就是不考虑权重即为None。如果选择输入的话可以选择balanced让类库自己计算类型权重或者自己输入各个类型的权重。举个例子比如对于0,1的二元模型我们可以定义class_weight{0:0.9,1:0.1}这样类型0的权重为90%而类型1的权重为10%。如果class_weight选择balanced那么类库会根据训练样本量来计算权重。某种类型样本量越多则权重越低样本量越少则权重越高。当class_weight为balanced时类权重计算方法如下n_samples / (n_classes * np.bincount(y))。n_samples为样本数n_classes为类别数量np.bincount(y)会输出每个类的样本数例如y[1,0,0,1,1],则np.bincount(y)[2,3]。那么class_weight有什么作用呢 在分类模型中我们经常会遇到两类问题第一种是误分类的代价很高。比如对合法用户和非法用户进行分类将非法用户分类为合法用户的代价很高我们宁愿将合法用户分类为非法用户这时可以人工再甄别但是却不愿将非法用户分类为合法用户。这时我们可以适当提高非法用户的权重。第二种是样本是高度失衡的比如我们有合法用户和非法用户的二元样本数据10000条里面合法用户有9995条非法用户只有5条如果我们不考虑权重则我们可以将所有的测试集都预测为合法用户这样预测准确率理论上有99.95%但是却没有任何意义。这时我们可以选择balanced让类库自动提高非法用户样本的权重。提高了某种分类的权重相比不考虑权重会有更多的样本分类划分到高权重的类别从而可以解决上面两类问题。random_state随机数种子int类型可选参数默认为无仅在正则化优化算法为sag,liblinear时有用。solver优化算法选择参数只有五个可选参数即newton-cg,lbfgs,liblinear,sag,saga。默认为liblinear。solver参数决定了我们对逻辑回归损失函数的优化方法有四种算法可以选择分别是liblinear使用了开源的liblinear库实现内部使用了坐标轴下降法来迭代优化损失函数。lbfgs拟牛顿法的一种利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。newton-cg也是牛顿法家族的一种利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。sag即随机平均梯度下降是梯度下降法的变种和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度适合于样本数据多的时候。saga线性收敛的随机优化算法的的变重。总结liblinear适用于小数据集而sag和saga适用于大数据集因为速度更快。对于多分类问题只有newton-cg,sag,saga和lbfgs能够处理多项损失而liblinear受限于一对剩余(OvR)。啥意思就是用liblinear的时候如果是多分类问题得先把一种类别作为一个类别剩余的所有类别作为另外一个类别。一次类推遍历所有类别进行分类。newton-cg,sag和lbfgs这三种优化算法时都需要损失函数的一阶或者二阶连续导数因此不能用于没有连续导数的L1正则化只能用于L2正则化。而liblinear和saga通吃L1正则化和L2正则化。同时sag每次仅仅使用了部分样本进行梯度迭代所以当样本量少的时候不要选择它而如果样本量非常大比如大于10万sag是第一选择。但是sag不能用于L1正则化所以当你有大量的样本又需要L1正则化的话就要自己做取舍了。要么通过对样本采样来降低样本量要么回到L2正则化。从上面的描述大家可能觉得既然newton-cg, lbfgs和sag这么多限制如果不是大样本我们选择liblinear不就行了嘛错因为liblinear也有自己的弱点我们知道逻辑回归有二元逻辑回归和多元逻辑回归。对于多元逻辑回归常见的有one-vs-rest(OvR)和many-vs-many(MvM)两种。而MvM一般比OvR分类相对准确一些。郁闷的是liblinear只支持OvR不支持MvM这样如果我们需要相对精确的多元逻辑回归时就不能选择liblinear了。也意味着如果我们需要相对精确的多元逻辑回归不能使用L1正则化了。max_iter算法收敛最大迭代次数int类型默认为10。仅在正则化优化算法为newton-cg, sag和lbfgs才有用算法收敛的最大迭代次数。multi_class分类方式选择参数str类型可选参数为ovr和multinomial默认为ovr。ovr即前面提到的one-vs-rest(OvR)而multinomial即前面提到的many-vs-many(MvM)。如果是二元逻辑回归ovr和multinomial并没有任何区别区别主要在多元逻辑回归上。OvR和MvM有什么不同OvR的思想很简单无论你是多少元逻辑回归都可以看做二元逻辑回归。具体做法是对于第K类的分类决策我们把所有第K类的样本作为正例除了第K类样本以外的所有样本都作为负例然后在上面做二元逻辑回归得到第K类的分类模型。其他类的分类模型获得以此类推。而MvM则相对复杂这里举MvM的特例one-vs-one(OvO)作讲解。如果模型有T类我们每次在所有的T类样本里面选择两类样本出来不妨记为T1类和T2类把所有的输出为T1和T2的样本放在一起把T1作为正例T2作为负例进行二元逻辑回归得到模型参数。我们一共需要T(T-1)/2次分类。可以看出OvR相对简单但分类效果相对略差这里指大多数样本分布情况某些样本分布下OvR可能更好。而MvM分类相对精确但是分类速度没有OvR快。如果选择了ovr则4种损失函数的优化方法liblinearnewton-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的内核运行程序。还有其他参数例子fromsklearn.datasetsimportload_irisfromsklearn.linear_modelimportLogisticRegressionX,yload_iris(return_X_yTrue)clfLogisticRegression(random_state0).fit(X,y)clf.predict(X[:2,:])array([0,0])clf.predict_proba(X[:2,:])array([[9.8...e-01,1.8...e-02,1.4...e-08],[9.7...e-01,2.8...e-02,...e-08]])clf.score(X,y)0.97...Logistic 回归算法实现理论和代码在博客《机器学习实战》学习笔记五Logistic 回归

相关新闻

PHP:数组函数(1)

PHP:数组函数(1)

2026/7/28 18:07:58

数组函数: 1.需求: 1)获取数组中的value. function getval($arr){foreach($arr as $key>$val){$row[]$val;}return $row; }** <?php $arrarray(item1>linux,item2>php,item3>java,item4>mysql,item5>jquery );// 数组遍历foreach($arr as $key>$val){…

NBM7100A与PIC18F56K42实现超低功耗物联网设备设计

NBM7100A与PIC18F56K42实现超低功耗物联网设备设计

2026/7/28 18:07:58

1. 项目背景与核心挑战在物联网设备和便携式电子产品的设计中&#xff0c;如何最大化初级电池&#xff08;不可充电电池&#xff09;的使用寿命一直是个关键难题。我最近在一个野外环境监测项目中使用NBM7100A电源管理芯片搭配PIC18F56K42微控制器&#xff0c;成功将CR2032纽扣…

关于MySQL多表关联时过滤条件的位置

关于MySQL多表关联时过滤条件的位置

2026/7/28 18:07:58

简单的一个Demo说明下问题表A和表B关联查询&#xff0c;以project_id4为过滤条件&#xff0c;查询结果返回表A中的ID&#xff0c;name&#xff0c;表B中的project_id,如果表B中没有和表A匹配的记录则a.project_id返回null&#xff0c;于是第一次我就写出了这样的SQLSELECTt.id,…

GBase 8s数据库新存储引擎核心能力介绍之二

GBase 8s数据库新存储引擎核心能力介绍之二

2026/7/28 19:08:00

南大通用GBase 8s数据库&#xff08;gbase database&#xff09;新一代存储引擎&#xff0c;围绕用户生产场景持续进化&#xff0c;以底层架构的全面革新&#xff0c;为企业级用户带来真正面向生产环境的数据管理体验。二、全局时间戳一致性&#xff1a;读写分离场景下的数据准…

工业安全双重预防系统:风险管控与隐患排查的数字化融合

工业安全双重预防系统:风险管控与隐患排查的数字化融合

2026/7/28 19:08:00

1. 项目背景与核心价值 在工业安全生产领域&#xff0c;风险管理一直是企业运营的重中之重。传统安全管理模式往往将风险分级管控和隐患排查治理割裂开来&#xff0c;导致两个体系各自为政、数据孤岛严重。这种割裂不仅造成资源浪费&#xff0c;更使得安全隐患难以及时发现和闭…

基于PSD的路面不平度建模技术与工程实践

基于PSD的路面不平度建模技术与工程实践

2026/7/28 19:08:00

1. 项目概述&#xff1a;路面不平度建模的核心价值 在车辆动力学仿真领域&#xff0c;路面不平度建模直接影响着悬架系统设计、乘坐舒适性评估和耐久性分析的准确性。传统方法往往采用简化的随机激励信号&#xff0c;而基于功率谱密度&#xff08;PSD&#xff09;的模块化建模方…

java NIO实现

java NIO实现

2026/7/28 19:08:00

NIO工作流程如图package nio; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.c…

GBase 8s数据库新存储引擎核心能力介绍之一

GBase 8s数据库新存储引擎核心能力介绍之一

2026/7/28 19:08:00

在数据量爆炸式增长、业务连续性要求日益严苛的今天&#xff0c;传统数据库存储架构正面临前所未有的挑战。南大通用GBase 8s数据库&#xff08;gbase database&#xff09;新一代存储引擎&#xff0c;围绕用户生产场景持续进化&#xff0c;以底层架构的全面革新&#xff0c;为…

专业级Wand增强工具:本地化配置与远程控制解决方案

专业级Wand增强工具:本地化配置与远程控制解决方案

2026/7/28 18:58:00

专业级Wand增强工具&#xff1a;本地化配置与远程控制解决方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer WandEnhancer是一款开源的本机客户端…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/28 13:30:18

目标&#xff1a;电脑作为RTSP 服务端&#xff0c;循环推送 H264/H265 视频流&#xff1b; RDK X5 通过 rtsp2display 拉流预览&#xff0c;完全不需要在开发板编译 live555。 提供两套成熟方案&#xff1a; ✅ 方案 A&#xff1a;FFmpeg&#xff08;最简单&#xff0c;优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/28 16:04:36

一、背景与测试方案 在实际项目交付中&#xff0c;PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及&#xff1a;多源PDF的文件流合并、页面级水印渲染&#xff08;含透明度混合与图层叠加&#xff09;、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/28 16:04:35

说实话&#xff0c;提到PDF拆分再压缩&#xff0c;我真是被折腾得够呛。 上个月公司年度合同归档&#xff0c;一份300多页的PDF总合同&#xff0c;需要按年份拆分成三个独立文件&#xff0c;再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单&#xff1f;先找个海…

零基础搭建桌面智能体,OpenClaw 2.7.9 分步实操,避开绝大多数部署陷阱

零基础搭建桌面智能体,OpenClaw 2.7.9 分步实操,避开绝大多数部署陷阱

2026/7/28 0:06:55

&#x1f4cc; 一、工具核心优势盘点 数据本地存储&#xff0c;安全系数高所有操作日志、文档资料均保存在本机&#xff0c;不会上传至云端&#xff0c;能够有效保护企业文件与个人隐私&#xff0c;规避数据泄露风险。 上手简单&#xff0c;零编程门槛采用全图形化可视化界面&…

计算机毕业设计之基于springboot的购物平台设计与实现

计算机毕业设计之基于springboot的购物平台设计与实现

2026/7/28 0:06:55

由于移动应用技术的持续性的快速发展&#xff0c;现实生活中人们大多数都是通过移动手机、电脑等智能设备来完成生活中的事务。因此&#xff0c;许多的人工传统行业也开始与互联网结合&#xff0c;不再一味的依靠人工手动&#xff0c;努力打造半自动数字化甚至是全自动数字化模…

豆包AI绘图提示词失效真相:NLP模型层token截断机制首次披露,3招绕过字数限制

豆包AI绘图提示词失效真相:NLP模型层token截断机制首次披露,3招绕过字数限制

2026/7/28 0:06:55

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;豆包AI绘图提示词失效现象全景扫描 近期大量用户反馈&#xff0c;豆包&#xff08;Doubao&#xff09;AI绘图功能对常规提示词&#xff08;Prompt&#xff09;响应异常&#xff1a;语义明确的指令被忽略、中英…