基于Python的机器学习系列(7):多元逻辑回归

        在本篇博文中,我们将探讨多元逻辑回归,它是一种扩展的逻辑回归方法,适用于分类数量超过两个的场景。与二元逻辑回归不同,多元逻辑回归使用Softmax函数将多个类别的概率输出映射到[0, 1]范围内,并确保所有类别的概率和为1。本文将通过具体的代码实现详细介绍多元逻辑回归的工作机制。

1. Softmax函数

        在多元逻辑回归中,我们使用Softmax函数来处理多类别的概率分布。Softmax函数可以将模型的线性输出转化为各类别的概率值。公式如下:

        其中c表示类别,k表示类别的总数。

Softmax函数的作用如下:

  • 它将每个类别的得分转化为非负的概率值。
  • Softmax函数通过分母的求和操作确保所有类别的概率和为1。
  • Softmax函数的分子和分母都包含指数函数$e$,这使得其导数易于计算,并能与交叉熵损失函数配合良好。
def softmax(x):return np.exp(x) / np.sum(np.exp(x), axis=1, keepdims=True)X = np.array([[1, 2, 3],[2, 4, 5]])Y = np.array([[0, 0, 1, 0],[1, 0, 0, 0]])  # one-hot encoded classesW = np.array([[1, 2, 3, 4],[2, 3, 1, 0],[1, 2, 5, 1]])softmax_output = softmax(X @ W)
print("Softmax Output:\n", softmax_output)
print("Check sum of probabilities:", softmax_output.sum(axis=1))
2. 交叉熵损失函数

        在多元逻辑回归中,我们继续使用交叉熵作为损失函数。对于每个样本,交叉熵损失可以表示为:

        与二元逻辑回归的交叉熵损失不同,损失函数现在对所有类别进行求和,从而扩展到多类场景。

def cross_entropy_loss(Y, h):return - np.sum(Y * np.log(h))loss = cross_entropy_loss(Y, softmax_output)
print("Cross Entropy Loss:", loss)
3. 梯度计算

        对于每个参数theta,损失函数J的梯度计算公式为:

        其中H和Y分别为预测值矩阵和真实值的one-hot编码矩阵。

        通过链式法则,我们可以详细推导出每个参数的梯度,并将其应用于梯度下降算法中。

4. 多元逻辑回归的实现

        下面是多元逻辑回归的完整实现步骤:

  1. 准备数据,包括添加截距项、one-hot编码标签、标准化特征等。
  2. 使用Softmax函数进行预测,并计算交叉熵损失。
  3. 基于损失函数计算梯度,并更新参数。
  4. 迭代上述步骤,直至达到收敛条件。
class LogisticRegression:def __init__(self, k, n, method, alpha=0.001, max_iter=5000):self.k = kself.n = nself.alpha = alphaself.max_iter = max_iterself.method = methoddef fit(self, X, Y):self.W = np.random.rand(self.n, self.k)self.losses = []if self.method == "batch":for i in range(self.max_iter):loss, grad = self.gradient(X, Y)self.losses.append(loss)self.W -= self.alpha * gradif i % 500 == 0:print(f"Loss at iteration {i}: {loss}")elif self.method == "minibatch":batch_size = int(0.3 * X.shape[0])for i in range(self.max_iter):ix = np.random.randint(0, X.shape[0] - batch_size)batch_X = X[ix:ix + batch_size]batch_Y = Y[ix:ix + batch_size]loss, grad = self.gradient(batch_X, batch_Y)self.losses.append(loss)self.W -= self.alpha * gradif i % 500 == 0:print(f"Loss at iteration {i}: {loss}")else:raise ValueError('Method must be "batch" or "minibatch".')def gradient(self, X, Y):m = X.shape[0]h = self.h_theta(X)loss = - np.sum(Y * np.log(h)) / merror = h - Ygrad = X.T @ errorreturn loss, graddef h_theta(self, X):return self.softmax(X @ self.W)def softmax(self, x):return np.exp(x) / np.sum(np.exp(x), axis=1, keepdims=True)def predict(self, X):return np.argmax(self.h_theta(X), axis=1)def plot_losses(self):plt.plot(self.losses)plt.xlabel('Iteration')plt.ylabel('Loss')plt.title('Loss over time')plt.show()# 使用模型进行训练
model = LogisticRegression(k=3, n=X_train.shape[1], method="minibatch")
model.fit(X_train, Y_train_encoded)
model.plot_losses()# 预测并评估
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
结语

        在本文中,我们探讨了多元逻辑回归,扩展了二元逻辑回归的概念,以适应多个类别的分类任务。通过软最大化函数(softmax)和交叉熵损失函数,我们能够有效地训练模型,并根据多个类别预测结果的概率分布来进行分类。这些技术在多类别分类问题中具有广泛的应用。

        通过理解多元逻辑回归的数学推导和代码实现,我们可以更好地应对实际的分类任务,尤其是在数据维度较高、类别较多的情况下。

        敬请期待下一篇博文:基于Python的机器学习系列(8):Newton Raphson逻辑回归,我们将探索一种更为高级的优化方法,用于进一步提高逻辑回归的效率和性能。

如果你觉得这篇博文对你有帮助,请点赞、收藏、关注我,并且可以打赏支持我!

欢迎关注我的后续博文,我将分享更多关于人工智能、自然语言处理和计算机视觉的精彩内容。

谢谢大家的支持!

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

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

相关文章

PMBOK® 第六版 控制范围

目录 读后感—PMBOK第六版 目录 结果固然重要,过程同样不可或缺。过程不仅是通往预期成果的途径,也是个人和团队能力提升与经验积累的关键阶段。过程中的每一步都是学习和成长的机会,每一次尝试都能激发创新,而公正透明的流程更增…

TCP BBR 数学模型完整版

今天顺带加入了 bbr 的所有状态和所有流程,获得以下的方程组: C Bltbw,R RtProp,T_r ProbeRTT 周期,g1 Startup gain,g2 ProbeBW gain。设 x estimated bandwidth,r round trip time&am…

MySQL 数据库深度解析:安装、语法与高级查询实战

一、引言 在现代软件开发和数据管理领域中,MySQL 数据库凭借其高效性、稳定性、开源性以及广泛的适用性,成为了众多开发者和企业的首选。无论是小型项目还是大型企业级应用,MySQL 都能提供可靠的数据存储和管理解决方案。本文将深入探讨 MyS…

系统编程-lvgl

带界面的MP3播放器 -- lvgl 目录 带界面的MP3播放器 -- lvgl 一、什么是lvgl? 二、简单使用lvgl 在工程中编写代码 实现带界面的mp3播放器 main.c events_init.c events_init.h 补充1:glob函数 补充2:atexit函数 一、什么是lvgl&a…

安科瑞ACREL-7000能源管控平台在综合能耗监测系统在大型园区的应用

摘要:大型综合园区已经成为多种能源消耗的重要区域,为了探索适用于大型综合园区的综合能耗监测系统,建立了综合能耗监测系统整体框架,提出了综合能耗网络、能耗关系集合、能耗均衡度等概念,并以某大型综合园区为例对综…

AIGC综合应用-黑神话悟空创意写真大片制作方法(实操附模型文件)

​ 怎么用AI来制作 这种黑悟空的现代时尚大片? 悟空不再只是传统的西游记形象,而是走上现代时尚的T台,成为时尚大片中的主角。这个创意乍一听似乎有些离奇,但通过AI技术的加持,这一切都能轻松实现。不需要昂贵的拍摄设…

自编码器(Autoencoder, AE):深入理解与应用

自编码器(Autoencoder, AE):深入理解与应用 引言 自编码器(Autoencoder, AE)是一种通过无监督学习方式来学习数据有效表示的神经网络模型。其核心思想是通过编码器将输入数据压缩成低维潜在表示,然后通过…

dokcer 安装 redis(单机版)

准备工作 拉取redis镜像 docker pull redis 通过docker-compose 安装redis 很方便、很简单 先安装docker,参考我这个安装示例进行安装 https://blog.csdn.net/qq_33192671/article/details/13714973 然后安装docker-compose,要是拉取docker-compose无…

低代码与AI:赋能企业数字化转型

引言 随着全球经济的快速发展和科技的飞速进步,数字化转型已成为各个行业和企业发展的重要趋势。数字化转型的背景不仅是提升效率和竞争力的手段,更是适应市场变化、满足客户需求的必由之路。 在当今信息化时代,技术的变革推动了企业运营方式…

Java语言程序设计——篇十七(1)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

探索人工智能的未来:埃里克·施密特2024斯坦福大学分享六

代理与文本生成模型的未来展望 您认为明年代理或文本生成模型会出现通货膨胀点吗? 不,不会。 我听到了类似的观点,尤其是埃里克科维茨的看法。他有一个很好的方式来阐述这三个趋势。虽然我之前也听说过这些趋势,但将它们整合起…

helm安装jenkins保姆级别

一、创建nfs服务器 这一步跳过、自行百度 注意:要给共享目录赋予权限chmod一下,不然到时候容器没办法在目录里面创建文件,初始化时候会报错误代码2 二、添加Jenkins的Helm仓库 helm repo add jenkinsci https://charts.jenkins.io helm re…

python dash框架 油气田可视化软件设计文档

V1.1:机器学习框架(神经网络) 时间范围优化 表格布局优化 添加前端设计元素布局 V1.0:基础布局和对应计算函数 要求 首先第一部分是通过神经网络预测天然气流量,其中输入开始时间和截止时间是为了显示这一段时间内的天然气流量预测结果 第二部分&…

前端宝典十三:node网络详解Tcp/IP/Http及网络安全防御

讨论网络相关的问题前,我们首先看一下从浏览器输入 URL 到显示前端页面的流程,首先从TCP的应用层、传输层、网络层、数据链路层开始看: 一、应用层、传输层、网络层、数据链路层 以下是从浏览器输入 URL 到显示前端页面的流程顺序解析&…

通过IDEA创建spring boot的web项目

1.Fle->New->Project,选择Maven&#xff0c;点击Next 2.修改项目名称&#xff0c;点击Finish 3.项目创建完毕&#xff0c;等待Maven下载完成 4.修改pom.xml文件&#xff0c;改成如下内容 <?xml version"1.0" encoding"UTF-8"?> <pr…

R 语言学习教程,从入门到精通,R 绘图饼图(22)

1、R 绘图 饼图 R 语言提供来大量的库来实现绘图功能。 饼图&#xff0c;或称饼状图&#xff0c;是一个划分为几个扇形的圆形统计图表&#xff0c;用于描述量、频率或百分比之间的相对关系。 R 语言使用 pie() 函数来实现饼图&#xff0c;语法格式如下&#xff1a; pie(x, la…

基于无人机边沿相关 ------- IBUS、SBUS协议和PPM信号

文章目录 一、IBUS协议二、SBUS协议三、PPM信号 一、IBUS协议 IBUS&#xff08;Intelligent Bus&#xff09;是一种用于电子设备之间通信的协议&#xff0c;采用串行通信方式&#xff0c;允许多设备通过单一数据线通信&#xff0c;较低延迟&#xff0c;支持多主机和从机结构&a…

EchoMimic原文翻译+代码调试+不同模型对比

文章目录 EchoMimic原文翻译EchoMimic:逼真的音频驱动肖像动画通过可编辑的landmark条件Abstract1. Introduction2. Related Works2.1. 扩散模型2.2.肖像动画:从视频到基于图像的方法 3. Method3.1. Preliminaries3.2. Model Architecture3.3. Training Details3.4. Inference …

线性预测与深度学习基础(Datawhale X 李宏毅苹果书 AI夏令营)

在这篇文章中&#xff0c;我们通过预测视频平台次日的观看次数的案例&#xff0c;来探讨线性预测模型和深度学习模型的基本概念及应用方法。 线性模型的构建与优化 我们首先使用线性回归模型来预测未来的观看次数。线性回归模型假设目标变量&#xff08;观看次数&#xff09;与…

HarmonyOS应用四之页面加载构建以及数据请求

目录&#xff1a; 1、加载网络页面/本地页面/html页面2、页面布局3、HTTP/HTTPS的数据请求4、上传图片并保存数据 1、加载网络页面/本地页面/html页面 // xxx.ets import { webview } from kit.ArkWeb; import { BusinessError } from kit.BasicServicesKit;Entry Component s…