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

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

《老饼讲解-机器学习》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.rhkb.cn/news/312582.html

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

相关文章

第20天:信息打点-红蓝队自动化项目资产侦察企查产权武器库部署网络空间

第二十天 一、工具项目-红蓝队&自动化部署 自动化-武器库部署-F8x 项目地址:https://github.com/ffffffff0x/f8x 介绍:一款红/蓝队环境自动化部署工具,支持多种场景,渗透,开发,代理环境,服务可选项等.下载:wget -O f8x https://f8x.io…

蓝桥杯 — — 完全日期

完全日期 友情链接:完全日期 题目: 思路: 直接从20010101枚举到20211231,然后再判断每一个数是否是一个合法的日期,如果这个日期是合法的,接着判断这个日期的每一个位置上的数字之和是否是一个完全平方数…

什么是公网IP?

公网IP(Internet Protocol)是指用于互联网通信的IP地址,它是互联网上每个设备在网络中的唯一标识。与公网IP相对的是私有IP,私有IP用于内部网络通信,无法直接访问互联网。在计算机网络中,公网IP扮演着重要的…

【文献分享】机器学习 + 分子动力学 + 第一性原理 + 电导率 + 微观结构

​【文献分享】机器学习 分子动力学 第一性原理 电导率 微观结构 分享一篇关于机器学习 分子动力学 第一性原理 电导率 微观结构的文章。 感谢论文的原作者! 关键词: 1. Machine learning force field 2. Molecular dynamics 3. Solid state …

机器学习周报第37周

目录 一、文献阅读:You Only Look Once: Unified, Real-Time Object Detection1.1 摘要1.2 背景1.3 论文模型1.4 网络设计1.5 YOLO的局限性1.6 实现代码 一、文献阅读:You Only Look Once: Unified, Real-Time Object Detection 1.1 摘要 YOLO是一种新…

重生奇迹mu恶魔来袭副本

在游戏重生奇迹mu中,恶魔来袭副本是玩家能够组队通过的副本。但是因为手游组队的不方便性,部分玩家对其还是非常苦手。而今天,我们就给大家讲解一下这个游戏的双人通关攻略。 1、挂机找怪手动输出 (1)对于普通剧情副本而言,挂机…

多张固定宽度元素,随着屏幕尺寸变化自动换行

背景&#xff1a;多张固定宽度元素&#xff0c;随着屏幕尺寸变化自动换行实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevic…

结合 react-webcam、three.js 与 electron 实现桌面人脸动捕应用

系列文章目录 React 使用 three.js 加载 gltf 3D模型 | three.js 入门React three.js 3D模型骨骼绑定React three.js 3D模型面部表情控制React three.js 实现人脸动捕与3D模型表情同步结合 react-webcam、three.js 与 electron 实现桌面人脸动捕应用 示例项目(github)&…

JDBC入门

JDBC java database connectivity: 就是使用java语言操作关系型数据库的一套API

Opengl 坐标系统概述

1.谈到opengl 坐标系统 首先要知道三个坐标转换矩阵&#xff0c;模型矩阵&#xff0c;观察矩阵&#xff0c;投影矩阵。 模型矩阵作用在将以物体中心为原点的坐标系统&#xff0c;转换到世界坐标。 观察矩阵作用在将世界坐标系统转换到观察坐标系统 投影矩阵作用在将观察坐标…

利用Sentinel解决雪崩问题(二)线程隔离和熔断降级

前言&#xff1a; 虽然限流可以尽量避免因高并发而引起的服务故障&#xff0c;但服务还会因为其它原因而故障。而要将这些故障控制在一定范围避免雪崩&#xff0c;就要靠线程隔离(舱壁模式)和熔断降级手段了&#xff0c;不管是线程隔离还是熔断降级&#xff0c;都是对客户端(调…

使用UDP实现TCP的功能,会带来什么好处?

比较孤陋寡闻&#xff0c;只知道QUIC TCPQUIC握手延迟TCP需要三次握手TLS握手三次握手TLS握手放在一起&#xff0c;实现0RTT头阻塞问题TCP丢失保文&#xff0c;会影响所有的应用数据包基于UDP封装传输层Stream&#xff0c;Stream内部保序&#xff0c;Stream之间不存在相互影响…

【模拟】Leetcode 提莫攻击

题目讲解 495. 提莫攻击 算法讲解 前后的两个数字之间的关系要么是相减之差 > 中毒时间 &#xff0c;要么反之 那即可通过示例&#xff0c;进行算法的模拟&#xff0c;得出上图的计算公式 class Solution { public:int findPoisonedDuration(vector<int>& time…

【电控笔记2.3】速度回路+系统延迟

总结: 遗留问题: 根据奈奎斯特采样定理,中断(传感器反馈)的频率是电角度频率的2倍以上,实际中一般是他5倍到10倍,这样才能采集出完整的信号,而控制频率应该要等于传感器反馈频率2.3.1速度回路pi控制器设计 pi伯德图近似设计(不考虑延时理想情况下) Tl:负载转矩

gpt4.0人工智能网页版

在最新的AI基准测试中&#xff0c;OpenAI几天前刚刚发布的GPT-4-Turbo-2024-04-09版本&#xff0c;大幅超越了Claude3 Opus&#xff0c;重新夺回了全球第一的AI王座。 GPT-4-Turbo-2024-04-09版本是目前国内外最强的大模型&#xff0c;官网需要20美元每月才能使用&#xff0c;…

基于Springboot的某大药房管理系统

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven…

计算机网络——实现smtp和pop3邮件客户端

实验目的 运用各种编程语言实现基于 smtp 协议的 Email 客户端软件。 实验内容 1. 选择合适的编程语言编程实现基于 smtp 协议的 Email 客户端软件。 2. 安装 Email 服务器或选择已有的 Email 服务器&#xff0c;验证自己的 Email 客户端软件是否能进行正常的 Email 收发功…

设计模式之大话西游

8年前深究设计模式&#xff0c;现如今再次回锅&#xff5e; 还是大话设计模式 这本书还是可以的 大话西游经典的台词&#xff1a;“曾经有一份真挚的爱情摆在我面前,我没有珍惜,等我失去的时候,我才后悔莫及,人世间最痛苦的事莫过于此。如果上天能够给我一个再来一次的机会,我会…

C++ 类和对象(二)

目录 1.前言 2.类的六个默认成员函数 3.构造函数 3.1概念 3.2特性 3.2.1 函数名与类名相同 3.2.2 无返回值 3.2.3对象实例化时自动调用 3.2.4 构造函数可以重载 3.2.5 默认构造函数的自动生成 3.2.6 默认构造函数对内置类型成员的初始化 3.2.7 默认构造函数的定义 4…

Docker安装(一)

一、安装Docker 服务器系统&#xff1a;centos 7 1.本地有docker的首先卸载本机docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \dock…