当前位置: 首页 > news >正文

L3 逻辑回归

  • 🍨 本文为🔗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' 或 dictrandom_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.lryc.cn/news/444988.html

相关文章:

  • Flink系列知识之:Checkpoint原理
  • 智算中心动环监控:构建高效、安全的数字基础设施@卓振思众
  • PyTorch VGG16手写数字识别教程
  • 安卓13删除下拉栏中的设置按钮 android13删除设置按钮
  • FDA辅料数据库在线免费查询-药用辅料
  • git pull 报错 refusing to merge unrelated histories
  • STM32G431RBT6(蓝桥杯)串口(发送)
  • 使用 typed-rest-client 进行 REST API 调用
  • 在Ubuntu 14.04上安装Solr的方法
  • LabVIEW提高开发效率技巧----使用LabVIEW工具
  • Pyspark dataframe基本内置方法(4)
  • 配置win10开电脑时显示可登录账号策略
  • 01-Mac OS系统如何下载安装Python解释器
  • 24 C 语言常用的字符串处理函数详解:strlen、strcat、strcpy、strcmp、strchr、strrchr、strstr、strtok
  • 数据驱动农业——农业中的大数据
  • 学习《分布式》必须清楚的《CAP理论》
  • navicat无法连接远程mysql数据库1130报错的解决方法
  • JetPack01- LifeCycle 监听Activity或Fragment的生命周期
  • OpenCSG推出StarShip SecScan:AI驱动的软件安全革新
  • 占道经营检测-目标检测数据集(包括VOC格式、YOLO格式)
  • 828华为云征文 | 云服务器Flexus X实例:RAG 开源项目 FastGPT 部署,玩转大模型
  • MySQL之基本查询(一)(insert || select)
  • 基于深度学习的多智能体协作
  • Nmap网络扫描器基础功能介绍
  • idea 编辑器常用插件集合
  • 如何优化Java商城系统的代码结构
  • 两数之和、三数之和、四数之和
  • 这几个方法轻松压缩ppt文件大小,操作起来很简单的压缩PPT方法
  • 【nvm管理多版本node】下载安装以及常见问题和解决方案
  • C++(学习)2024.9.23