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

第8篇 | 逻辑回归

逻辑回归虽然名字中包含回归但实际上是一种分类算法。它通过sigmoid函数将线性输出转换为概率广泛用于二分类问题。本篇将详细介绍逻辑回归的原理、实现和应用。一、逻辑回归概述逻辑回归用于处理二分类问题输出为样本属于某一类别的概率。它在线性回归的基础上加上sigmoid函数将连续的预测值映射到[0,1]区间。二、逻辑回归原理逻辑回归使用sigmoid函数σ(z) 1 / (1 e^(-z))。通过最大化似然函数或最小化对数损失来训练模型。对数损失函数为L -1/N * Σ(y*log(p) (1-y)*log(1-p))。代码示例逻辑回归基础import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import (accuracy_score, precision_score, recall_score,f1_score, roc_auc_score, roc_curve,confusion_matrix, classification_report)import warningswarnings.filterwarnings(ignore)print( * 60)print(第8篇逻辑回归)print( * 60)# 生成模拟数据二分类np.random.seed(42)n_samples 500# 两个类别的数据分布class_0 np.random.randn(250, 2) * 1.5 np.array([-2, -2])class_1 np.random.randn(250, 2) * 1.5 np.array([2, 2])# 合并数据X np.vstack([class_0, class_1])y np.array([0] * 250 [1] * 250)# 划分训练集和测试集X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)print(f训练集: {X_train.shape[0]} 样本)print(f测试集: {X_test.shape[0]} 样本)print(f类别分布: 0类{sum(y0)}, 1类{sum(y1)})# 创建逻辑回归模型model LogisticRegression(random_state42)model.fit(X_train, y_train)# 预测类别y_pred model.predict(X_test)# 预测概率y_prob model.predict_proba(X_test)[:, 1]print(f\n模型参数:)print(f 权重: {model.coef_[0]})print(f 偏置: {model.intercept_[0]:.4f})三、模型评估分类模型的评估指标包括准确率、精确率、召回率、F1分数、AUC-ROC等。代码示例模型评估print(\n * 50)print(模型评估指标)print( * 50)# 基本指标accuracy accuracy_score(y_test, y_pred)precision precision_score(y_test, y_pred)recall recall_score(y_test, y_pred)f1 f1_score(y_test, y_pred)print(f\n分类报告:)print(classification_report(y_test, y_pred, target_names[Class 0, Class 1]))print(f\n核心指标:)print(f 准确率 (Accuracy): {accuracy:.4f})print(f 精确率 (Precision): {precision:.4f})print(f 召回率 (Recall): {recall:.4f})print(f F1分数: {f1:.4f})# 混淆矩阵cm confusion_matrix(y_test, y_pred)print(f\n混淆矩阵:)print(cm)# AUC-ROCauc_score roc_auc_score(y_test, y_prob)print(f\nAUC-ROC: {auc_score:.4f})# 计算ROC曲线fpr, tpr, thresholds roc_curve(y_test, y_prob)# 可视化fig, axes plt.subplots(1, 3, figsize(15, 5))# 1. 混淆矩阵热力图import seaborn as snssns.heatmap(cm, annotTrue, fmtd, cmapBlues, axaxes[0])axes[0].set_title(Confusion Matrix)axes[0].set_xlabel(Predicted)axes[0].set_ylabel(Actual)# 2. ROC曲线axes[1].plot(fpr, tpr, colordarkorange, lw2, labelfROC (AUC {auc_score:.4f}))axes[1].plot([0, 1], [0, 1], colornavy, lw2, linestyle--)axes[1].set_xlim([0.0, 1.0])axes[1].set_ylim([0.0, 1.05])axes[1].set_xlabel(False Positive Rate)axes[1].set_ylabel(True Positive Rate)axes[1].set_title(ROC Curve)axes[1].legend(loclower right)# 3. 分类边界可视化h 0.02x_min, x_max X[:, 0].min() - 1, X[:, 0].max() 1y_min, y_max X[:, 1].min() - 1, X[:, 1].max() 1xx, yy np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))Z model.predict(np.c_[xx.ravel(), yy.ravel()])Z Z.reshape(xx.shape)axes[2].contourf(xx, yy, Z, alpha0.3, cmapplt.cm.RdYlBu)axes[2].scatter(X[:, 0], X[:, 1], cy, cmapplt.cm.RdYlBu, edgecolorsblack, alpha0.6)axes[2].set_xlabel(Feature 1)axes[2].set_ylabel(Feature 2)axes[2].set_title(Decision Boundary)plt.tight_layout()plt.savefig(logistic_regression_eval.png, dpi150)plt.show()四、多分类逻辑回归逻辑回归可以扩展到多分类问题常用的策略包括One-vs-RestOvR和多项式逻辑回归Softmax。代码示例多分类print(\n * 50)print(多分类逻辑回归)print( * 50)# 生成三类数据np.random.seed(42)n_samples 300class_0 np.random.randn(100, 2) * 0.8 np.array([0, 0])class_1 np.random.randn(100, 2) * 0.8 np.array([3, 3])class_2 np.random.randn(100, 2) * 0.8 np.array([0, 5])X_multi np.vstack([class_0, class_1, class_2])y_multi np.array([0] * 100 [1] * 100 [2] * 100)X_train_m, X_test_m, y_train_m, y_test_m train_test_split(X_multi, y_multi, test_size0.2, random_state42)# 多分类逻辑回归使用softmaxmodel_multi LogisticRegression(multi_classmultinomial, solverlbfgs, random_state42)model_multi.fit(X_train_m, y_train_m)y_pred_multi model_multi.predict(X_test_m)y_prob_multi model_multi.predict_proba(X_test_m)print(f多分类准确率: {accuracy_score(y_test_m, y_pred_multi):.4f})print(f\n分类报告:)print(classification_report(y_test_m, y_pred_multi, target_names[Class 0, Class 1, Class 2]))# 可视化fig, ax plt.subplots(figsize(8, 6))h 0.02x_min, x_max X_multi[:, 0].min() - 1, X_multi[:, 0].max() 1y_min, y_max X_multi[:, 1].min() - 1, X_multi[:, 1].max() 1xx, yy np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))Z model_multi.predict(np.c_[xx.ravel(), yy.ravel()])Z Z.reshape(xx.shape)plt.contourf(xx, yy, Z, alpha0.3, cmapplt.cm.tab10)scatter plt.scatter(X_multi[:, 0], X_multi[:, 1], cy_multi, cmapplt.cm.tab10, edgecolorsblack)plt.colorbar(scatter, labelClass)plt.xlabel(Feature 1)plt.ylabel(Feature 2)plt.title(Multi-class Logistic Regression)plt.tight_layout()plt.savefig(multiclass_logistic.png, dpi150)plt.show()五、逻辑回归的优缺点逻辑回归具有解释性强、训练速度快等优点但也有线性边界、难以处理复杂关系等局限性。代码示例正则化参数调优print(\n * 50)print(正则化参数C的影响)print( * 50)# C越小正则化越强C_values [0.001, 0.01, 0.1, 1, 10, 100]train_scores []test_scores []for C in C_values:model LogisticRegression(CC, random_state42, max_iter1000)model.fit(X_train, y_train)train_scores.append(model.score(X_train, y_train))test_scores.append(model.score(X_test, y_test))print(fC{C:.3f}: 训练准确率{train_scores[-1]:.4f}, 测试准确率{test_scores[-1]:.4f})# 可视化plt.figure(figsize(10, 5))plt.semilogx(C_values, train_scores, b-o, labelTrain)plt.semilogx(C_values, test_scores, r-s, labelTest)plt.xlabel(Regularization parameter C)plt.ylabel(Accuracy)plt.title(Effect of C on Logistic Regression)plt.legend()plt.grid(True)plt.savefig(logistic_reg_param.png, dpi150)plt.show()print(\n逻辑回归的C参数:)print(- C越大正则化越弱模型越复杂)print(- C越小正则化越强防止过拟合)print(- 需要通过交叉验证选择最优C值)六、总结逻辑回归是二分类问题的经典算法通过sigmoid函数将线性输出转换为概率评估指标包括准确率、精确率、召回率、F1、AUC可以通过正则化参数C控制模型复杂度可以扩展到多分类问题softmax

相关文章:

第8篇 | 逻辑回归

逻辑回归虽然名字中包含"回归",但实际上是一种分类算法。它通过sigmoid函数将线性输出转换为概率,广泛用于二分类问题。本篇将详细介绍逻辑回归的原理、实现和应用。一、逻辑回归概述逻辑回归用于处理二分类问题,输出为样本属于某一…...

SDMatte在内容制作中的应用:短视频封面透明底素材、PPT动态图源快速生成

SDMatte在内容制作中的应用:短视频封面透明底素材、PPT动态图源快速生成 1. 为什么你需要专业的AI抠图工具 在内容创作领域,时间就是金钱。无论是制作短视频封面,还是设计PPT演示文稿,抠图都是最耗时的环节之一。传统Photoshop抠…...

MFCMouseEffect:把桌面输入反馈这件事,做成一个真正可扩展的引擎

MFCMouseEffect:把桌面输入反馈这件事,做成一个真正可扩展的引擎 很多录屏、教程、演示和桌面工具,功能本身已经足够好,但一到“用户看你怎么操作”这一步,体验就会突然掉下来。 为什么? 因为点击不够明…...

QMK Toolbox:机械键盘固件定制与刷写全攻略

QMK Toolbox:机械键盘固件定制与刷写全攻略 【免费下载链接】qmk_toolbox A Toolbox companion for QMK Firmware 项目地址: https://gitcode.com/gh_mirrors/qm/qmk_toolbox 一、核心价值:重新定义键盘控制自由 QMK Toolbox 作为开源硬件领域的…...

Pixel Fashion Atelier实操手册:批量生成时利用CSV导入多组Enchantment参数

Pixel Fashion Atelier实操手册:批量生成时利用CSV导入多组Enchantment参数 1. 引言:为什么需要批量生成功能 在时尚设计领域,设计师经常需要快速生成多个不同风格的服装设计方案。传统方式需要逐个输入参数、等待生成、再调整参数&#xf…...

BURSTER 9235 (85437090) 应变片信号放大器

BURSTER 9235 (85437090) 应变片信号放大器品牌:BURSTER(德国波司特,精密测量技术专家)型号:9235内部订货号:85437090类型:直连式(In-Line)应变片传感器信号放大器一、核…...

Llama-3.2V-11B-cot在智能教育中的应用:数学题配图逻辑漏洞识别实战

Llama-3.2V-11B-cot在智能教育中的应用:数学题配图逻辑漏洞识别实战 1. 引言:当AI遇见数学教育 数学教材和习题集中的配图错误是一个长期困扰教育行业的难题。据统计,约15%的数学教材配图存在不同程度的逻辑漏洞或表达偏差,这些…...

SEO_2024年最新SEO趋势分析与实战策略解读

<h1 id"2024seo">2024年最新SEO趋势分析与实战策略解读</h1> <p>在数字营销的快速发展中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;作为提升网站流量的重要手段&#xff0c;一直备受关注。2024年&#xff0c;SEO领域再度发生了一些重要…...

Java 从入门到精通(八):抽象类和接口到底怎么选?看懂之后,面向对象才算真的入门

Java 从入门到精通&#xff08;八&#xff09;&#xff1a;抽象类和接口到底怎么选&#xff1f;看懂之后&#xff0c;面向对象才算真的入门 学到封装、继承、多态之后&#xff0c;很多人会有一种“好像差不多懂了”的感觉。 会定义类&#xff0c;会 new 对象&#xff0c;也知道…...

OpenClaw备份策略:GLM-4.7-Flash模型与技能容灾方案

OpenClaw备份策略&#xff1a;GLM-4.7-Flash模型与技能容灾方案 1. 为什么需要备份OpenClaw环境 去年冬天的一个深夜&#xff0c;我的MacBook突然遭遇硬盘故障。当时OpenClaw正在执行一个长达3小时的自动化数据处理任务&#xff0c;所有中间状态和配置瞬间消失。这次事故让我…...

ChromePass终极指南:3分钟找回Chrome浏览器所有保存密码

ChromePass终极指南&#xff1a;3分钟找回Chrome浏览器所有保存密码 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass 你是否曾在Chrome浏览器中保存了重要账号密码&#xff0c;却…...

【ComfyUI】Qwen-Image-Edit-F2P 环境配置全攻略:Anaconda创建独立Python环境

ComfyUI Qwen-Image-Edit-F2P 环境配置全攻略&#xff1a;Anaconda创建独立Python环境 你是不是也遇到过这种情况&#xff1a;好不容易找到一个好用的AI图像编辑模型&#xff0c;比如Qwen-Image-Edit-F2P&#xff0c;兴冲冲地准备在ComfyUI里跑起来&#xff0c;结果第一步安装…...

智能提取视频转文档:自动化工具提升内容处理效率

智能提取视频转文档&#xff1a;自动化工具提升内容处理效率 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 在数字化学习与办公场景中&#xff0c;视频内容提取已成为知识管理的重要…...

别再犯这些错误!英文邮件写作中的常见误区与正确写法

英文邮件写作进阶指南&#xff1a;避开9个致命错误&#xff0c;展现专业沟通力 在跨国商务沟通中&#xff0c;一封得体的英文邮件就像精心设计的数字名片。我曾见证过一位工程师因为邮件中一个称呼错误&#xff0c;导致价值200万美元的合同谈判陷入僵局&#xff1b;也见过实习生…...

从GitHub开源项目到一键部署:OFA模型在星图平台的快速落地

从GitHub开源项目到一键部署&#xff1a;OFA模型在星图平台的快速落地 1. 引言 你是不是也遇到过这种情况&#xff1f;在GitHub上看到一个特别酷的AI项目&#xff0c;比如OFA这种能看图说话、理解多模态信息的模型&#xff0c;心里痒痒的想立刻上手试试。结果呢&#xff0c;光…...

拆解 OA 系统:从需求梳理到核心执行,新手一看就会

你是不是觉得公司的OA系统特别难用&#xff1f;报销要填八百个字段&#xff0c;不知道哪个是必填&#xff1b;请假批完还得自己跑去找下一个人&#xff1b;找一个去年的合同&#xff0c;得翻十几层文件夹。更气人的是&#xff0c;提了意见根本没人管&#xff0c;说系统改不了。…...

沃虎电子:SFP连接器在高速光模块中的应用与选型要点

SFP&#xff08;Small Form-factor Pluggable&#xff09;连接器是现代光通信设备的核心接口组件&#xff0c;广泛应用于交换机、服务器、光模块等设备。随着数据中心向400G/800G演进&#xff0c;SFP连接器的性能要求不断提升。本文从工程实践角度&#xff0c;系统介绍SFP连接器…...

Struts2拦截器实战:从零构建权限控制与日志记录

1. Struts2拦截器机制解析 Struts2拦截器是框架最核心的机制之一&#xff0c;它采用AOP&#xff08;面向切面编程&#xff09;思想&#xff0c;在Action执行前后插入自定义逻辑。想象一下拦截器就像地铁安检系统&#xff1a;每个乘客&#xff08;请求&#xff09;都必须经过安检…...

手把手教你搞定CMT2300A的315MHz匹配电路:从原理图到物料清单(附实测数据)

深入解析CMT2300A在315MHz频段的射频匹配电路设计与实战优化 作为一名长期深耕射频硬件设计的工程师&#xff0c;我最近在工业遥控器项目中遇到了一个典型挑战&#xff1a;如何为CMT2300A设计稳定可靠的315MHz匹配电路。与常见的433MHz应用不同&#xff0c;315MHz频段在元件参数…...

CTFHub | 解密MySQL、Redis、MongoDB流量中的隐藏Flag

1. 数据库流量分析入门&#xff1a;为什么需要Wireshark&#xff1f; 当你参加CTF比赛时&#xff0c;经常会遇到需要从数据库流量中寻找Flag的题目。这类题目通常会给你一个抓包文件&#xff08;pcap格式&#xff09;&#xff0c;里面记录了MySQL、Redis或MongoDB等数据库的网络…...

安卓玩机神器:无需Root的“搞机工具箱”全功能解析与实战指南

1. 安卓玩机新选择&#xff1a;搞机工具箱为何成为神器&#xff1f; 最近在折腾安卓手机时&#xff0c;发现了一个宝藏工具——搞机工具箱。作为一个长期和安卓系统打交道的玩家&#xff0c;我试过各种需要Root权限的工具&#xff0c;但这款软件最让我惊喜的是它完全不需要Root…...

AntiDupl.NET:数字资产管理师的智能图片去重解决方案

AntiDupl.NET&#xff1a;数字资产管理师的智能图片去重解决方案 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 在当今视觉内容爆炸的时代&#xff0c;无论是专业摄影…...

2026-3-26、可变字符串类型StringBuilder

*为什么使用StringBuiler&#xff1a; string是不可变字符串类型&#xff0c;意味着一旦修改就无法修改&#xff1a; string s "Hello"; s s " World"; // 看起来是修改&#xff0c;实际上是创建了新对象// 原来的"Hello"对象还在内存中stri…...

Lumerical圆锥建模避坑指南:从参数计算到3D旋转生成的完整流程

Lumerical圆锥建模避坑指南&#xff1a;从参数计算到3D旋转生成的完整流程 在光学仿真领域&#xff0c;精确的几何建模往往是获得可靠结果的第一步。对于圆锥结构这种在光子晶体、超表面和纳米天线设计中广泛应用的形状&#xff0c;其建模过程看似简单却暗藏玄机。许多研究人员…...

Pikachu靶场实战:SQL注入漏洞深度解析与防御指南

1. SQL注入漏洞初探&#xff1a;从Pikachu靶场开始 第一次接触SQL注入时&#xff0c;我完全被这种"通过输入框就能控制数据库"的神奇攻击方式震惊了。在Pikachu靶场这个专为Web安全学习设计的实验环境中&#xff0c;我们可以安全地体验各种SQL注入攻击手法。不同于真…...

HunyuanVideo-Foley效果展示:AI生成的量子计算实验室环境音效(科技感)

HunyuanVideo-Foley效果展示&#xff1a;AI生成的量子计算实验室环境音效&#xff08;科技感&#xff09; 1. 核心能力概览 HunyuanVideo-Foley是一款专为视频与音效生成设计的AI模型&#xff0c;其私有部署镜像经过RTX 4090D 24GB显卡的深度优化。这个镜像最令人惊艳的能力之…...

如何通过Akagi提升麻将水平:从新手到高手的智能助手指南

如何通过Akagi提升麻将水平&#xff1a;从新手到高手的智能助手指南 【免费下载链接】Akagi A helper client for Majsoul 项目地址: https://gitcode.com/gh_mirrors/ak/Akagi 你是否在麻将对局中常常面临这样的困境&#xff1a;面对复杂牌局不知如何抉择&#xff1f;想…...

告别设备标识混乱!用uniappx插件Ba-IdCode-U一站式获取OAID/AndroidID/IMEI(附隐私合规指南)

跨平台开发者的设备标识管理实战&#xff1a;从混乱到合规的完整解决方案 每次启动新项目时&#xff0c;开发者们是否总在纠结该用哪种设备标识&#xff1f;OAID、AndroidID还是IMEI&#xff1f;国内厂商的兼容性问题怎么解决&#xff1f;隐私合规的红线又在哪里&#xff1f;本…...

别再让时钟信号‘跑偏’了!手把手教你理解ADC中DCC电路的设计要点

高速ADC设计中的时钟占空比校正实战指南 时钟信号就像ADC系统的心跳&#xff0c;每一次跳动都决定着数据采样的精准度。当这个"心跳"变得不规律时&#xff0c;整个系统的性能就会大打折扣。在高速ADC设计中&#xff0c;时钟占空比失真是一个常见却又容易被忽视的问题…...

DHCP实验1

一、实验拓扑二、实验需求 1.PC1和PC2使用路由器模拟2.PC1和R1的g0/0口连接到SW的vlan10&#xff1b;PC2和R1的g0/1口连接到SW的vlan203.R1在vlan10的IP地址为192.168.1.1/24&#xff0c;vlan20的IP地址为192.168.2.1/244.在R1上配置DHCP服务&#xff0c;分别为2个网段分配IP地…...