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)

数组函数: 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){…

2026/7/28 18:08:06 阅读更多 →
NBM7100A与PIC18F56K42实现超低功耗物联网设备设计

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

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

2026/7/28 18:08:06 阅读更多 →
关于MySQL多表关联时过滤条件的位置

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

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

2026/7/28 18:08:06 阅读更多 →

最新新闻

ExifToolGUI图片元数据管理工具:3分钟掌握免费开源的照片信息批量编辑完整指南

ExifToolGUI图片元数据管理工具:3分钟掌握免费开源的照片信息批量编辑完整指南

ExifToolGUI图片元数据管理工具&#xff1a;3分钟掌握免费开源的照片信息批量编辑完整指南 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 你是否曾为整理旅行照片时发现拍摄时间错乱而头疼&#xff1f;是否…

2026/7/28 18:16:08 阅读更多 →
Ethereum智能合约静态分析(上)

Ethereum智能合约静态分析(上)

概述 目前&#xff0c;以太坊智能合约的安全事件频发&#xff0c;从The DAO事件到最近的Fomo3D奖池被盗&#xff0c;每次安全问题的破坏力都是巨大的&#xff0c;如何正确防范智能合约的安全漏洞成了当务之急。本文主要讲解了如何通过对智能合约的静态分析进而发现智能合约中的…

2026/7/28 18:16:08 阅读更多 →
2026同城门店数字人视频工作流:口播与实景素材如何配合

2026同城门店数字人视频工作流:口播与实景素材如何配合

2026同城门店数字人视频工作流&#xff1a;口播与实景素材如何配合 同城实体店用AI拍视频、剪视频&#xff0c;选数字人软件时最容易走偏的一步&#xff0c;是把全部注意力放在“人物像不像真人”。门店内容真正需要解决的是另一件事&#xff1a;用户看完以后&#xff0c;能不能…

2026/7/28 18:16:08 阅读更多 →
物联网设备低功耗设计:NBM5100A与PIC32MX795F512L能量管理方案

物联网设备低功耗设计:NBM5100A与PIC32MX795F512L能量管理方案

1. 项目背景与核心需求解析在物联网和低功耗设备设计中&#xff0c;工程师们经常面临一个经典矛盾&#xff1a;设备需要间歇性的大电流脉冲&#xff08;如无线传输时的射频模块启动&#xff09;&#xff0c;但小型一次性电池&#xff08;如锂亚硫酰氯电池&#xff09;在直接提供…

2026/7/28 18:16:08 阅读更多 →
leetcode-数组

leetcode-数组

118. 杨辉三角 class Solution:def generate(self, numRows: int) -> List[List[int]]:result []for i in range(numRows):now [1]*(i1)if i > 1:for i in range(1, i):now[i] pre[i - 1] pre[i]result [now]pre nowreturn result 1122. 数组的相对排序 cla…

2026/7/28 18:16:08 阅读更多 →
Leetcode 99. 恢复搜索二叉树

Leetcode 99. 恢复搜索二叉树

Time: 20190901 题目描述 二叉搜索树中的两个节点被错误地交换。 请在不改变其结构的情况下&#xff0c;恢复这棵树。 示例 1: 输入: [1,3,null,null,2]1/3\2输出: [3,1,null,null,2]3/1\2示例 2: 输入: [3,1,4,null,null,2]3/ \ 1 4/2输出: [2,1,4,null,null,3]2/ \ 1 4/3…

2026/7/28 18:15:08 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿&#xff01;3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑&#xff1a;把几百页的财报、法规、技术手册扔给向量库&#xff0c;问一个具体问题&#xff0c;搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了&#xff0c;要么藏在几十条结果的最下面。语义相似≠真正相关&#xff0c;这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营&#xff0c;从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候&#xff0c;每天刷半小时抖音&#xff0c;手动把爆款视频的口播敲进备忘录&#xff0c;一条2分钟的视频得花十来分钟&#xff0c;碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档&#xff0c;可以直接使用&#xff01;系统支持图片、视频、摄像头等多种方式检测裂缝&#xff0c;功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像&#xff01; pubg绝地求生目标检测数据集 1分类&#xff1a;e_body&#xff0c;14905个标签&#xff0c;txt格式 共计14244张图&#xff0c;99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别&#xff1a; allies enemy tag图片总量&#xff1a;7247张训练集&#xff1a;5139张验证集&#xff1a;1425张测试集&#xff1a;683张标注状态&#xff1a;全部已标注&#xff0c;即拿即用数据格式&#xff1a;支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻