L3 逻辑回归

news2025/1/3 0:55:22
  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

在周将使用 LogisticRegression 函数对经典的鸢尾花 (Iris) 数据集进行分类。将详细介绍逻辑回归的数学原理。

1. 逻辑回归的数学原理

逻辑回归是一种线性分类算法,常用于二分类问题。它的核心思想是通过将线性回归模型的输出通过一个 Sigmoid 函数映射到一个 0 到 1 之间的概率值,从而进行分类。

1.1 线性模型

逻辑回归的线性模型与线性回归相似,其形式为:

z = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β n x n z = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \dots + \beta_n x_n z=β0+β1x1+β2x2++βnxn

其中:

  • ( z ) 是线性组合的输出,
  • ( x 1 x_1 x1, x 2 x_2 x2, … \dots , x n x_n xn) 是特征变量,
  • ( β 0 \beta_0 β0 ) 是截距(常数项),
  • ( β 1 , … , β n \beta_1, \dots, \beta_n β1,,βn ) 是特征变量的系数。
1.2 Sigmoid 函数

线性模型输出 ( z ) 之后,通过 Sigmoid 函数将其转化为概率:

y ^ = σ ( z ) = 1 1 + e − z \hat{y} = \sigma(z) = \frac{1}{1 + e^{-z}} y^=σ(z)=1+ez1

Sigmoid 函数的输出值是一个概率,范围在 0 到 1 之间。当概率 ( y ^ ≥ 0.5 \hat{y} \geq 0.5 y^0.5) 时,我们预测为正类(1),否则预测为负类(0)。

1.3 损失函数(对数损失)

为了找到最优的系数 ( β \beta β ),我们需要最小化损失函数。逻辑回归的损失函数为对数损失函数(log loss):

L ( β ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( y ^ ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − y ^ ( i ) ) ] L(\beta) = - \frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(\hat{y}^{(i)}) + (1 - y^{(i)}) \log(1 - \hat{y}^{(i)}) \right] L(β)=m1i=1m[y(i)log(y^(i))+(1y(i))log(1y^(i))]

其中:

  • ( m ) 是样本数,
  • ( y ( i ) y^{(i)} y(i) ) 是第 ( i i i ) 个样本的真实标签,
  • ( y ^ ( i ) \hat{y}^{(i)} y^(i)) 是第 ( i i i ) 个样本的预测概率。

通过梯度下降法或其他优化算法,逻辑回归模型可以根据最小化该损失函数来找到最优的参数 ( β \beta β )。

2. LogisticRegression 函数介绍

LogisticRegression(
    penalty='l2',                 # 正则化类型,'l1', 'l2', 'elasticnet', 'none'
    dual=False,                   # 双对偶或原始方法
    tol=0.0001,                   # 优化过程的容差
    C=1.0,                        # 正则化强度的倒数,较小的值表示较强的正则化
    fit_intercept=True,           # 是否拟合截距项
    intercept_scaling=1,          # 拦截(截距)的缩放系数
    class_weight=None,            # 给定类别的权重,'balanced' 或 dict
    random_state=None,            # 随机数种子
    solver='lbfgs',               # 优化算法,{'newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga'}
    max_iter=100,                 # 最大迭代次数
    multi_class='auto',           # 处理多类分类问题的方法,{'auto', 'ovr', 'multinomial'}
    verbose=0,                    # 是否在训练过程中输出日志信息
    warm_start=False,             # 是否使用上次调用的解作为初始解
    n_jobs=None,                  # 并行处理的作业数量
    l1_ratio=None                 # 混合正则化的弹性网络的l1比例
)

3. 鸢尾花数据分类

鸢尾花数据集是一个经典的多分类数据集,包含 150 个样本,分为 3 类(Setosa、Versicolor、Virginica),每类 50 个样本。每个样本有 4 个特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度。

以下是完整的代码实现:

import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
from sklearn.linear_model import LogisticRegression

# 1. 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data  # 特征矩阵
y = iris.target  # 目标变量

# 2. 特征标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 3. 划分训练集和测试集(80% 训练集,20% 测试集)
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

# 4. 逻辑回归模型
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# 5. 模型预测
y_pred = model.predict(X_test)

# 6. 模型评估
accuracy = accuracy_score(y_test, y_pred)
print(f"模型的准确率: {accuracy:.2f}")

# 打印分类报告
print("分类报告:")
print(classification_report(y_test, y_pred, target_names=iris.target_names))

# 打印混淆矩阵
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred))

在这里插入图片描述

4. 总结

本周学习了逻辑回归的数学原理,并通过鸢尾花数据集展示了如何使用 LogisticRegression 进行多分类任务。为后续学习打下基础。

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

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

相关文章

海外大带宽服务器连接失败怎么办?

在全球化日益加深的今天,海外大带宽服务器已成为企业拓展国际市场、提升业务效率的重要工具。然而,面对复杂多变的网络环境和技术挑战,服务器连接失败的问题时有发生,这不仅影响了企业的正常运营,还可能带来经济损失和…

R语言机器学习算法实战系列(二) SVM算法(Support Vector Machine)

文章目录 介绍原理应用方向下载数据加载R包导入数据数据预处理数据描述数据切割标准化数据设置参数训练模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模型总结系统信息介绍 支持向量机(Support Vector Machine,简称SVM)是一种…

JavaScript发送邮件:实现前端触发的教程?

JavaScript发送邮件的方式?怎么使用JavaScript发信? 无论是用户反馈、联系表单还是自动通知,前端触发的邮件发送功能都能极大地提升用户体验。AokSend将详细介绍如何通过JavaScript发送邮件,实现前端触发的邮件发送功能。 JavaS…

58.【C语言】内存函数(memcpy函数)

目录 1.memcpy *简单使用 翻译: *模拟实现 注意事项: *例题 1.memcpy *简单使用 memcpy:memory copy cplusplus的介绍 点我跳转 翻译: 函数 memcpy void * memcpy ( void * destination, const void * source, size_t num ); 复制内存块 直接从source指向的位置复制num…

SpringBoot开发-数据加密

提示:本篇文章介绍各种加密工具以及数据脱密工具的使用 文章目录 前言一、AES加密算法二、AES加密算法工具使用(一)引入依赖(二)编写工具类(三)测试 三、MD5加密算法四、MD5加密工具使用&#x…

Windows【环境 01】服务器系统重装后的服务恢复(ES\Redis\Jafka\Tomcat)环境变量和服务注册

服务器系统重装后的服务恢复 1.原因2.问题处理2.1 JDK2.2 Elasticsearch2.3 Redis2.4 Jafka2.5 Tomcat 3.总结 1.原因 Windows 服务器系统盘损坏,换了硬盘并重做了系统,其他磁盘未损坏但安装的服务无法正常运行了,包括: Elastic…

莱卡相机sd内存卡格式化了怎么恢复数据

在数字化时代,相机已成为我们记录生活、捕捉瞬间的重要设备。而SD内存卡,作为相机的存储媒介,承载着我们的珍贵记忆和重要数据。然而,有时由于误操作、系统错误或其他原因,我们可能会不小心格式化SD内存卡,…

Windows11自带截图工具的录屏功能

WinShiftS打开截图工具。 点击工具栏上的“录屏”按钮,或者按下WinAltR组合键。启动录屏模式,并允许你开始录制屏幕内容。 可以选择录制整个屏幕还是只录制一个特定的窗口。此外,还可以设置录制视频的分辨率和帧率。如果希望录制屏幕上的音…

在 deepin 上除了 Steam,还能怎么玩游戏?

查看原文 前段时间,很多朋友在 deepin 23 上实现了《黑神话:悟空》的通关,那么除了通过 Steam 玩 Windows 游戏之外,还有其他可以使用的游戏平台吗? 回答,当然是可以哒! 游戏平台介绍 今天介…

每日OJ题_牛客_WY22 Fibonacci数列(斐波那契)

目录 牛客_WY22 Fibonacci数列(斐波那契) 解析代码 牛客_WY22 Fibonacci数列(斐波那契) Fibonacci数列_牛客题霸_牛客网 解析代码 求斐波那契数列的过程中,判断⼀下:何时 n 会在两个 fib 数之间。 #in…

拥塞控制算法的 rtt 公平性

我强调过,拥塞控制的核心在公平可用性,公平性由 buffer 动力学保证,而 buffer 动力学有两种表现形式: buffer 占比决定带宽占比,以 aimd 为例;带宽越小,buffer 挤兑加速比越大,以 b…

HTTP中的event-stream,eventsource,SSE,chatgpt,stream request,golang

我们都知道chatgpt是生成式的,因此它返回给客户端的消息也是一段一段的,所以普通的HTTP协议无法满足,当然websocket是能满足的,但是这个是双向的通信,其实 SSE(Server-Sent Events) 正好满足这个…

树与图的深度优先遍历(dfs的图论中的应用)

模板题 846. 树的重心 给定一颗树,树中包含 nn 个结点(编号 1∼n)和 n−1条无向边。 请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。 重心定义:重心是指树中的一个结点&#xff…

RabbitMQ 高级特性——发送方确认

文章目录 前言发送方确认confirm 确认模式return 退回模式 常见面试题 前言 前面我们学习了 RabbitMQ 中交换机、队列和消息的持久化,这样能够保证存储在 RabbitMQ Broker 中的交换机和队列中的消息实现持久化,就算 RabbitMQ 服务发生了重启或者是宕机&…

【Android】浅析MVC与MVP

【Android】浅析MVC与MVP 什么是架构? 架构(Architecture)在软件开发中指的是软件系统的整体设计和结构,它描述了系统的高层组织方式,包括系统中各个组件之间的关系、依赖、交互方式,以及这些组件如何协同…

基于OpenCV的YOLOv5图片检测

利用OpenCV的DNN模块加载onnx模型文件进行图片检测。 1、使用的yolov5工程代码,调用export.py导出onnx模型。 2、下载opencv版本,https://opencv.org/releases/ 使用opencv版本4.5.3或以上,本文使用的opencv4.6.0 3、使用vc20…

4.使用 VSCode 过程中的英语积累 - View 菜单(每一次重点积累 5 个单词)

前言 学习可以不局限于传统的书籍和课堂,各种生活的元素也都可以做为我们的学习对象,本文将利用 VSCode 页面上的各种英文元素来做英语的积累,如此做有 3 大利 这些软件在我们工作中是时时刻刻接触的,借此做英语积累再合适不过&a…

STM32 使用 CubeMX 实现按键外部中断

目录 问题背景知识参考需要改什么注意尽量不要在中断函数使用 循环函数做延时中断函数中延时方法调试 问题 我想实现按钮触发紧急停止类似功能,需要使用按键中断功能。 背景知识 GPIO 点亮 LED。stm32cubemx hal学习记录:GPIO输入输出。STM32—HAL库 …

【实战篇】MySQL是怎么保证高可用的?

背景 在一个主备关系中,每个备库接收主库的 binlog 并执行。正常情况下,只要主库执行更新生成的所有 binlog,都可以传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性。 但是,MySQL…

免费在线压缩pdf 压缩pdf在线免费 推荐简单好用

压缩pdf在线免费?在日常生活和工作学习中,处理PDF文件是常见任务。但有时PDF文件体积较大,给传输、存储和分享带来不便。因此,学习PDF文件压缩技巧十分必要。压缩PDF文件是指通过技术手段减小文件占用的存储空间,同时尽…