逻辑回归模型-逻辑回归算法原理-逻辑回归代码与实现-笔记整合

通过一段时间的学习,总算把逻辑回归模型弄清楚了

《老饼讲解-机器学习》www.bbbdata.com中是讲得最清晰的,结合其它资料,整理一个完整的笔记如下,希望能帮助像我这样入门的新人,快速理解逻辑回归算法原理和逻辑回归实现代码。


目录

一、什么是逻辑回归模型

1.1 什么是逻辑回归模型

1.2 线性回归与逻辑回归的区别与关系

1.3 逻辑回归公式

二、逻辑回归模型原理

逻辑回归模型算法原理

三、逻辑回归损失函数与逻辑回归训练

3.1 逻辑回归损失函数

3.2 逻辑回归模型训练

3.3 逻辑回归梯度公式

四、逻辑回归实现python代码

4.1 python实现逻辑回归(调用sklearn)

4.2 python实现逻辑回归(自己实现)

4.3 逻辑回归模型评估


一、什么是逻辑回归模型

1.1 什么是逻辑回归模型

逻辑回归模型(Logistic Regression)包含了二元逻辑回归和多元逻辑回归,二元逻辑回归用来解决二分类问题,多元逻辑回归用来解决多分类问题。多元逻辑回归属于二元逻辑回归的拓展,但二元逻辑回归用得最多,学习应先从二元逻辑回归开始。多元逻辑回归在需要时可以选择性学习。一般所说的逻辑回归都是指二元逻辑回归,本文的逻辑回归也是指二元逻辑回归。

1.2 线性回归与逻辑回归的区别与关系

线性回归是用做数值预测的,属于回归模型。而逻辑回归是用来做类别预测的,属于模式识别模型。它们的共同之处是,X和y都是线性关系。可以说,逻辑回归是“用于做类别预测”的线性回归。

1.3 逻辑回归公式

逻辑回归的公式包括三部分:

(1) 逻辑回归模型公式:逻辑回归模型公式是模型用来计算模型预测结果的公式

(2) 逻辑回归损失函数公式:逻辑回归损失函数公式是用来训练模型的评估指标

(3) 逻辑回归梯度公式:逻辑回归梯度公式是训练模型时用来调整模型参数的公式

下面详细梳理逻辑回归模型原理,并理解上面三条公式,也就基本弄清楚逻辑回归算法了。

二、逻辑回归模型原理

2.1 逻辑回归模型算法原理

线性回归拟合的是数值,并不符合二分类问题预测类别的需求,但数值与类别也是有关联的,例如,天色越黑,下雨概率就越大,即值越大,属于某类别的概率也越大,值与概率之间可以互转。 在数学里通常用函数Sigmoid函数将数值转化为概率:

\textbf{Sigmoid}(x) = \dfrac{1}{1+e^{-x}},sigmoid函数的输出区间为(0,1),它与概率的范围是一致的,

2.2 逻辑回归模型公式

根据逻辑回归模型原理,所以,很自然地,逻辑回归模型公式为:

三、逻辑回归损失函数与逻辑回归训练

3.1 逻辑回归损失函数

逻辑回归的损失函数为交叉熵损失函数:

逻辑回归模型中的w,b参数需要通过数据训练来得到,训练的标准就是使以上的交叉熵损失函数值最小,它的意义是模型预测正确概率最大化,可以通过最大似然法推导出来

具体可参考文章《逻辑回归损失函数推导过程》

3.2 逻辑回归模型训练

训练逻辑回归模型可以使用梯度下降法,梯度下降法通过将损失函数每次往负梯度方向调整来找到局部最优解。梯度下降法训练逻辑回归算法流程图如下:

3.3 逻辑回归梯度公式

逻辑回归模型训练过程需要使用到逻辑回归损失函数的梯度公式,逻辑回归梯度公式如下:

可以结合下面的代码来理解公式

四、逻辑回归实现python代码

4.1 python实现逻辑回归(调用sklearn)

python实现逻辑回归一般通过sklearn包来完成,具体示例代码如下:

"""
本代码展示在python中调用sklearn来训练逻辑回归模型
本代码来自《老饼讲解-机器学习》www.bbbdata.com
"""
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
import numpy as np
#----数据加载------
data = load_breast_cancer()                  # 加载breast_cancer数据
X    = data.data[:,4:8]                      # 作为示例,只使用4个变量来建模
y    = data.target                           # 类别标签#-----训练模型--------------------
clf = LogisticRegression(random_state=0)     # 初始化逻辑回归模型         
clf.fit(X,y)                                 # 训练逻辑回归模型
#------打印结果------------------------
print("模型参数:"+str(clf.coef_))           # 打印模型系数
print("模型阈值:"+str(clf.intercept_))      # 打印模型阈值

运行后输出结果如下:
 模型参数:[[-0.53024026 -3.48636783 -6.89132654 -4.37965412]]
模型阈值:[1.80112869]          

4.2 python实现逻辑回归(自己实现)

也可以自己通过算法原理来实现逻辑回归的训练,结合梯度下降算法与逻辑回归梯度公式就可以,具体示例代码如下:

"""
本代码展示梯度下降求解逻辑回归的python代码实现
本代码来自《老饼讲解-机器学习》www.bbbdata.com
"""
from sklearn.datasets import load_breast_cancer
import numpy as np
#----数据加载------
data = load_breast_cancer()                 # 加载breast_cancer数据
X    = data.data[:,4:8]                     # 作为示例,只使用4个变量来建模
y    = data.target                          # 类别标签
xt = np.insert(X, X.shape[1], 1, axis=1)    # 给X增加一列,作为阈值#-----梯度下降求解w---------------
np.random.seed(888)                         # 设定随机种子,以确保每次程序结果一次
w = np.random.rand(xt.shape[1])             # 初始化权重
for i in range(10000):                      # 逐步训练权重p = 1/(1+np.exp(-xt@w))                 # 计算pw = w - 0.01*(xt.T@(p-y))               # 往负梯度方向更新w
p = 1/(1+np.exp(-xt@w))                     # 最终的预测结果
print("参数w:"+str(w))                     # 打印参数

运行后输出结果如下:
 参数w:[  7.16215375  14.98708501 -16.84689114 -73.92486786   3.38331608] 

4.3 逻辑回归模型评估

训练完成后,将参数代回到逻辑回归模型,就是最用终来预测所使用的公式:


整理不易,点赞收藏!

相关链接:《sklearn逻辑回归参数详解》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/822191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Adobe AE(After Effects)2023下载地址及安装教程

Adobe After Effects是一款专业级别的视觉效果和动态图形处理软件,由Adobe Systems开发。它被广泛用于电影、电视节目、广告和其他多媒体项目的制作。 After Effects提供了强大的合成和特效功能,可以让用户创建出令人惊艳的动态图形和视觉效果。用户可以…

06节-51单片机-LCD1602调试工具

欢迎订阅专栏,持续为您更新! 1.LCD1602调试工具 使用LCD1602液晶屏作为调试窗口,提供类似printf函数的功能,可实时观察单片机内部数据的变换情况,便于调试和演示。 本文提供的LCD1602代码属于模块化的代码&#xff…

java创建线程池的方法

简介 线程池是一种用于管理和重用线程的机制,它可以有效地管理线程的创建和销毁,减少线程创建和销毁的开销,并且能够控制并发线程数量,避免资源耗尽和系统过载。Java 提供了java.util.concurrent 包来支持线程池的实现。 1.Threa…

蓝桥杯刷题-乌龟棋

312. 乌龟棋 - AcWing题库 /* 状态表示:f[b1,b2,b3,b4]表示所有第 i种卡片使用了 bi张的走法的最大分值。状态计算:将 f[b1,b2,b3,b4]表示的所有走法按最后一步选择哪张卡片分成四类:第 i类为最后一步选择第 i种卡片。比如 i2,则…

基于OKHttp的大文件下载

1.需求&#xff1a; 根据Url下载大文件&#xff0c;本地创建文件&#xff0c;从输入流读取并写入文件&#xff0c;要求能满足大文件的下载&#xff0c;不能出现OOM 2.引入依赖 <!-- OK HTTP --> <dependency><groupId>com.squareup.okhttp3</groupId>…

Selenium(二):WebDriver核心方法和属性

一、WebDriver核心属性 1.river.name 浏览器名称 2.driver.current_url 获取当前URL 3.driver.title 获得当前页面标题 4.driver.page_source 获得当前页面源码 5.driver.current_window_handle 获得当前窗口句柄 6.driver.window_handles 获得当前所有窗口句柄 二、Web…

【学习】jemter中如何高效使用正则表达式

在Jemter的世界里&#xff0c;正则表达式无疑是一把锐利的剑&#xff0c;它可以帮助我们轻松地解决许多问题。在Jemter的性能测试过程中&#xff0c;我们常常需要提取响应中的某些数据&#xff0c;以便在后续的请求中使用。这时&#xff0c;正则表达式就派上用场了。通过学习如…

Java并发体系--LinkedTransferQueue

LinkedTransferQueue LinkedTransferQueue是Java并发包中的一个类&#xff0c;它实现了BlockingQueue接口。 LinkedTransferQueue是一个基于链表的无界阻塞队列&#xff0c;它支持先进先出的顺序&#xff0c;并且具有高并发性能。它的主要特点是能够在生产者线程和消费者…

【web开发网页制作】html+css家乡长沙旅游网页制作(4页面附源码)

家乡长沙网页制作 涉及知识写在前面一、网页主题二、网页效果Page1、主页Page2、历史长沙Page3、著名人物Page4、留言区 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 四、网页源码HtmlCSS 五、源码获取5.1 获取方式 作者寄语 涉及知识 家乡长沙网页制作&#x…

Linux下的IP地址与主机名

IP和主机名 IP地址和主机名 什么是IP地址 IP地址 每一台联网的电脑都会有一个地址&#xff0c;用于和其它计算机进行通讯 IP地址主要有2个版本&#xff0c;V4版本和V6版本&#xff08;V6很少用&#xff0c;课程暂不涉及&#xff09; IPv4版本的地址格式是&#xff1a;a.b…

【AIGC】AIGC在虚拟数字人中的应用:塑造未来互动体验的革新力量

&#x1f680; &#x1f680; &#x1f680;随着科技的快速发展&#xff0c;AIGC已经成为引领未来的重要力量。其中&#xff0c;AIGC在虚拟数字人领域的应用更是引起了广泛关注。虚拟数字人作为一种先进的数字化表达形式&#xff0c;结合了3D建模、动画技术、人工智能等多种先进…

MySQL-锁篇

文章目录 表级锁和行级锁了解吗&#xff1f;有什么区别&#xff1f;行级锁使用有什么注意事项&#xff1f;InnoDB有哪几类行锁&#xff1f;共享锁和排他锁是什么&#xff1f;意向锁有什么用&#xff1f; 锁是一种常见的并发事务的控制方式 表级锁和行级锁了解吗&#xff1f;有什…

鸿蒙HarmonyOS开发规范-完善中

代码规范 所有文件&#xff0c;包括自动生成的编译文件package.json都要格式化&#xff08;IDE快捷键CtrlAltL&#xff09;&#xff1b;函数命名&#xff0c;C大驼峰&#xff0c;TS、JS小驼峰&#xff0c;函数命名注意动宾结构&#xff1b;静态常量需使用全大写&#xff0c;文…

如何提取音频中的封面

大家在播放MP3音乐的时候经常可以在播放器上看到这个音乐的封面&#xff0c;那么我们要如何提取MP3的音乐里面的封面呢&#xff1f; 打开智游剪辑&#xff08;官网: zyjj.cc&#xff09;&#xff0c;搜索音乐封面提取 然后就只需要拖入MP3文件点击提交就可以了 下面这里简单展示…

Python100个库分享第20个—xlrd(办公库篇)

目录 专栏导读库的介绍库的功能库的安装测试数据准备基础用法1:读取xlsx表格基础用法2:读取指定单元格的数据基础用法3:工作表的一些基本信息总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌…

预分频器×重装载值)/LSI频率 为什么等于总时间

1. 第一种算法理解&#xff1a;分频系数 64 &#xff0c;外部低速时钟40khz&#xff0c; 则一次计数周期1.6ms &#xff0c;计数625个数&#xff0c;则有625个周期 &#xff0c;1.6ms*625 等于1s 如果分频系数是64&#xff0c;外部低速时钟&#xff08;LSI&#xff09;频率是…

K8S之Resource Quotas

参考文档&#xff1a;资源配额 | Kubernetes 1.Resource Quotas&#xff1a;资源配额管理 当多个用户或团队共享具有固定节点数目的集群时&#xff0c;人们会担心有人使用超过其基于公平原则所分配到的资源量。 资源配额是帮助管理员解决这一问题的工具。 资源配额&#xff0c…

Linux硬件管理

文章目录 Linux硬件管理1.查看磁盘空间 df -h2.查看文件的磁盘占用空间 du -ah3.查看系统内存占用情况 htop Linux硬件管理 1.查看磁盘空间 df -h 语法 df [选项][参数]选项 -a或–all&#xff1a;包含全部的文件系统&#xff1b; –block-size<区块大小>&#xff1a;…

微信小程序浮标,可以拖动,自动靠边隐藏一半客服图标功能

不多说&#xff0c;直接上代码。全屏拖动无抖动&#xff0c;中间停留自动靠边&#xff0c;拖动隐藏一半&#xff0c;可自己根据代码改动为自己想要的效果 js代码 import { tpStaticUrl,basictpStaticUrl } from "../../../envConfig"; let app getApp(); Componen…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十三 简单去除图片水印效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十三 简单去除图片水印效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十三 简单去除图片水印效果 一、简单介绍 二、简单去除图片水印效果实现原理 三、简单去除图片水印效果案例…