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

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

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

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

相关文章

校园智能水电预付费管理系统

校园智能水电预付费管理系统是一种专为学校水电资源管理而设计的智能化系统,旨在提供全面的水电资源管理解决方案,满足校园管理者对水电资源管理的需求。该系统整合了先进的智能技术和云计算,为校园管理者提供了实时监控、自动计费、节能管理…

Pytest精通指南(15)Parametrize之设置别名和解决中文乱码

文章目录 前言使用ids参数设置别名解决别名乱码方式一解决别名乱码方式二 前言 前有文章讲解了fixture函数中使用ids参数给测试用例函数设置别名; 查漏补缺连接:待定 当使用pytest.mark.parametrize来参数化我们的测试函数时,也可以使用ids参…

高标准化及可扩展的产品能力,助力声通科技运营效率不断提升

高标准化及可扩展的产品能力对企业发展具有重要意义,有助于企业提高运营效率、增强市场竞争力,并推动企业实现规模化发展。上海声通信息科技股份有限公司(下文称:声通科技或公司)作为我国领先的企业级全栈交互式人工智…

重生奇迹mu恶魔来袭副本

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

【文献分享】PCCP:机器学习 + 分子动力学 + 第一性原理 + 热学性质 + 微观结构

分享一篇关于机器学习 分子动力学 第一性原理 热学性质(密度、粘度、扩散系数) 微观结构的文章。 感谢论文的原作者! 关键词: 1. Machine learning, 2. Deep potential, 3. Molecular dynamics 4. Molten salt, 5. Thermo…

飞桨Ai(二)paddle使用CPU版本可以正常识别,切换为GPU版本时无法识别结果

一、问题描述: 刚开始用paddle的CPU版本,对训练好的模型进行推理,正常识别出想要的结果后来尝试使用paddle的GPU版本,然后发现识别出来是空的 二、系统思路: 最终系统环境如下: 系统:win10 …

Docker安装(一)

一、安装Docker 服务器系统: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…

反转二叉树(力扣226)

解题思路:用队列进行前序遍历的同时把节点的左节点和右节点交换 具体代码如下: class Solution { public:TreeNode* invertTree(TreeNode* root) {if (root NULL) return root;swap(root->left, root->right); // 中invertTree(root->left)…

网络编程(现在不重要)

目录 网络编程三要素与InetAddress类的使用 软件架构 面临的主要问题 网络编程三要素(对应三个问题) InetAddress的使用 TCP与UDP协议剖析与TCP编程案例(了解) TCP协议 UDP协议 例子 UDP、URL网络编程 URL:&…

NVM下载、NVM配置、NVM常用命令

NVM(nodejs版本管理切换工具)下载、配置、常用命令 0、NVM常用命令 nvm off // 禁用node.js版本管理(不卸载任何东西) nvm on // 启用node.js版本管理 nvm install <version> // 安装node.js的命名 version是版本号 例…

linux 挂载云盘 NT只能挂载2T,使用parted挂载超过2T云盘

一、删除原来挂载好的云盘和分区 1、查看挂载号的云盘 fdisk -l 发现我们有5千多G但是只挂载了2T&#xff0c;心里非常的慌张&#xff01;十分的不爽&#xff01; 好&#xff0c;我们把它干掉&#xff0c;重新分区&#xff01; 2、解除挂载 umount /homeE 没保存跳转到&…