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

保姆级教程:用NumPy手搓一个逻辑回归,搞定西瓜书3.0α数据集分类

从零实现逻辑回归用NumPy解析西瓜数据集分类问题在机器学习入门阶段理解算法原理与代码实现之间的桥梁至关重要。本文将以周志华《机器学习》中的西瓜数据集3.0α为例带你用纯NumPy实现逻辑回归模型避开框架封装直击算法核心。不同于直接调用现成库我们将从数学公式出发逐步构建数据加载、模型定义、训练策略和结果可视化的完整流程特别适合希望深入理解机器学习底层原理的开发者。1. 数据准备与特征工程1.1 数据集解析与加载西瓜数据集3.0α包含17个样本每个样本有密度和含糖率两个特征以及好瓜1或坏瓜0的标签。我们先构建一个轻量级数据加载器import numpy as np import pandas as pd class SimpleDataLoader: def __init__(self, data, features, label): self.features data[features].values self.labels data[label].values.reshape(-1, 1) self._size len(data) def __len__(self): return self._size def __getitem__(self, idx): return self.features[idx], self.labels[idx]使用示例data pd.read_csv(watermelon_3.0a.csv) loader SimpleDataLoader(data, [密度, 含糖率], 好瓜)1.2 数据标准化处理逻辑回归对特征尺度敏感建议进行标准化def standardize(features): mean np.mean(features, axis0) std np.std(features, axis0) return (features - mean) / std standardized_features standardize(loader.features)2. 逻辑回归模型实现2.1 核心数学原理逻辑回归通过sigmoid函数将线性组合映射到(0,1)区间$$ \sigma(z) \frac{1}{1e^{-z}} \quad \text{其中} \quad z w^Tx b $$决策边界设为0.5$\sigma(z) \geq 0.5$ → 正类$\sigma(z) 0.5$ → 负类2.2 NumPy实现class LogisticRegression: def __init__(self, lr0.01): self.weights None self.lr lr def sigmoid(self, z): return 1 / (1 np.exp(-z)) def initialize_weights(self, n_features): self.weights np.zeros((n_features 1, 1)) # 1 for bias def forward(self, x): z np.dot(x, self.weights[:-1]) self.weights[-1] return self.sigmoid(z) def predict(self, x, threshold0.5): return (self.forward(x) threshold).astype(int)3. 训练策略与优化3.1 损失函数与梯度计算使用交叉熵损失函数$$ J(w,b) -\frac{1}{m}\sum_{i1}^m [y^{(i)}\log(h(x^{(i)})) (1-y^{(i)})\log(1-h(x^{(i)}))] $$梯度计算def compute_gradients(self, x, y, predictions): error predictions - y dw np.dot(x.T, error) / len(y) db np.sum(error) / len(y) return dw, db3.2 留一法交叉验证针对小数据集采用留一法确保数据利用率def loo_cross_validation(data, epochs100): accuracies [] for i in range(len(data)): train_data np.delete(data, i, axis0) test_sample data[i] model LogisticRegression() model.fit(train_data[:, :-1], train_data[:, -1], epochs) pred model.predict(test_sample[:-1]) accuracies.append(pred test_sample[-1]) return np.mean(accuracies)4. 结果可视化与分析4.1 决策边界绘制def plot_decision_boundary(model, X, y): x_min, x_max X[:, 0].min()-0.1, X[:, 0].max()0.1 y_min, y_max X[:, 1].min()-0.1, X[:, 1].max()0.1 xx, yy np.meshgrid(np.linspace(x_min, x_max, 100), np.linspace(y_min, y_max, 100)) Z model.predict(np.c_[xx.ravel(), yy.ravel()]) Z Z.reshape(xx.shape) plt.contourf(xx, yy, Z, alpha0.4) plt.scatter(X[:, 0], X[:, 1], cy, s20, edgecolork) plt.xlabel(密度标准化后) plt.ylabel(含糖率标准化后)4.2 训练过程监控记录每次迭代的损失变化epochs range(1, len(loss_history)1) plt.plot(epochs, loss_history, b-) plt.title(Training Loss) plt.xlabel(Epochs) plt.ylabel(Loss) plt.grid(True)5. 关键实现细节与优化技巧5.1 学习率选择策略不同学习率对收敛速度的影响学习率收敛速度稳定性适用场景0.1快低简单问题0.01中等高默认选择0.001慢很高精细调优推荐使用学习率衰减策略self.lr initial_lr * (1 / (1 decay_rate * epoch))5.2 权重初始化对比不同初始化方法效果差异零初始化简单但可能导致对称性问题随机初始化打破对称性推荐小范围随机值self.weights np.random.randn(n_features 1, 1) * 0.015.3 正则化处理添加L2正则化防止过拟合def compute_loss(self, x, y, lambda_0.01): predictions self.forward(x) loss -np.mean(y*np.log(predictions) (1-y)*np.log(1-predictions)) reg_loss lambda_ * np.sum(self.weights**2) / (2*len(y)) return loss reg_loss6. 完整代码整合与扩展将各模块组合成完整流程# 数据准备 data pd.read_csv(watermelon_3.0a.csv) X standardize(data[[密度, 含糖率]].values) y data[好瓜].values.reshape(-1, 1) # 模型训练 model LogisticRegression(lr0.1) model.fit(X, y, epochs500, verboseTrue) # 评估与可视化 print(f训练准确率: {model.evaluate(X, y):.2%}) plot_decision_boundary(model, X, y)扩展建议添加特征交叉项增强模型能力实现多分类逻辑回归加入早停机制防止过拟合尝试不同的优化算法如动量法在实际项目中当数据量超过500样本时建议改用SGD优化器加速训练。对于这个西瓜数据集经过50次迭代后模型通常能达到85%以上的准确率关键是要理解每个参数更新的数学含义而不仅仅是调用fit()方法。

相关文章:

保姆级教程:用NumPy手搓一个逻辑回归,搞定西瓜书3.0α数据集分类

从零实现逻辑回归:用NumPy解析西瓜数据集分类问题在机器学习入门阶段,理解算法原理与代码实现之间的桥梁至关重要。本文将以周志华《机器学习》中的西瓜数据集3.0α为例,带你用纯NumPy实现逻辑回归模型,避开框架封装,直…...

用Python手撸一个垃圾邮件过滤器:从数据清洗到模型预测的保姆级教程

用Python手撸一个垃圾邮件过滤器:从数据清洗到模型预测的保姆级教程每天打开邮箱,总能看到一堆"恭喜中奖"、"限时优惠"的未读邮件——这种体验想必大家都不陌生。作为开发者,我们完全可以用Python从零开始打造一个专属的…...

操作简便吗?8款AI论文写作工具综合榜,毕业答辩稳了!

写论文时是不是总卡在开头,毫无思路?文献资料太多,却找不到重点?格式调整一遍又一遍,查重还是不理想? 别担心!AI论文写作工具正在改变你的科研体验。本文将从学术严谨性、文献引用能力、查重合规…...

Claude Code SubAgents 配置实战:4个现成配置,复制就能用

用 Claude Code 做项目有个烦人的事:上下文窗口不够用。 让它查一下某个模块的实现逻辑,它把 20 个文件的内容全塞进对话里。查完之后你说"好,现在改这个函数",它告诉你上下文快满了,要不要压缩。 上周我重构…...

WordPress AI: 7.0如何为AI驱动的网站奠定基础

此前,所有集成人工智能的 WordPress 插件都必须自行构建基础架构。 即将推出的 WordPress 7.0 版本改变了这一现状,它引入了共享的基础架构,支持 AI 在各个站点上的运行。 AI 工具现在可以发现网站的功能,通过统一的层访问 Word…...

你的音乐不该被格式绑架:用QMCDecode一键解锁QQ音乐加密文件

你的音乐不该被格式绑架:用QMCDecode一键解锁QQ音乐加密文件 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录&#xff0c…...

如何在Blender中实现专业级MMD模型动画制作:5步完整解决方案

如何在Blender中实现专业级MMD模型动画制作:5步完整解决方案 【免费下载链接】blender_mmd_tools MMD Tools is a blender addon for importing/exporting Models and Motions of MikuMikuDance. 项目地址: https://gitcode.com/gh_mirrors/bl/blender_mmd_tools …...

工业智能化的时序选型指南:当数据底座遇见机器学习

随着工业 4.0 和物联网的深入发展,企业对时序数据的诉求已经发生了质的改变:“仅仅把海量数据存下来,并在大屏上画成折线图”已经远远无法满足高阶的业务需求。风机设备的预测性维护、流水线能耗的异常检测、智能电网的产量预测……这些高价值…...

书匠策AI|论文降重降AIGC,原来可以这么丝滑?官网www.shujiangce.com一键解锁!

各位还在为查重率和AIGC率焦虑到秃头的同学们,集合了!👋 今天这篇不讲大道理,不列干巴巴的操作手册,咱们就用聊天的方式,把书匠策AI这个宝藏工具给你扒个底朝天。如果你还不知道它,那你的论文写…...

融合gws-PINNs与马尔可夫切换模型:反演跳跃系数PDE的混合框架

1. 项目概述与核心挑战在科学计算和工程建模领域,我们经常遇到一个“反着来”的难题:已知一个物理系统的观测数据(比如某个区域随时间变化的温度场、流速场),也知道描述这个系统的大致物理规律(比如热传导方…...

5分钟实现Rhino到Blender转换:3dm文件导入完整教程

5分钟实现Rhino到Blender转换:3dm文件导入完整教程 【免费下载链接】import_3dm Blender importer script for Rhinoceros 3D files 项目地址: https://gitcode.com/gh_mirrors/im/import_3dm 你是否为Rhino模型无法在Blender中完美呈现而烦恼?im…...

LED闪灯电路板学习 过程

原理图和pcb是开源的,照着抄就行了,难点主要在于焊接,,焊接我分为三步,第一步一定要点锡,呈现45度角,大约3秒到5秒,第二步就是要夹稳零件往一边靠,第三步就是要顺水的焊锡焊另外一边,最重要就是第二步,熬过去就简单了,打了5个板子花了三天时间从零成功,重…...

XUnity.AutoTranslator:如何免费实现Unity游戏实时翻译的完整指南

XUnity.AutoTranslator:如何免费实现Unity游戏实时翻译的完整指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 在游戏的世界里,语言障碍常常成为玩家体验全球优秀作品的绊脚石。…...

ComfyUI-Manager深度解析:AI工作流扩展管理系统的架构设计与性能优化

ComfyUI-Manager深度解析:AI工作流扩展管理系统的架构设计与性能优化 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable…...

3步解决洛雪音乐播放问题:六音音源修复完整指南

3步解决洛雪音乐播放问题:六音音源修复完整指南 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 你是否遇到过洛雪音乐升级后无法播放歌曲的困扰?点击播放按钮只有加载动画…...

黑龙江移远科技,是懂预算、懂场景、更懂服务的专业服务商

很多人误以为移远科技只是简单卖设备的贸易公司,实则不然。依托全品牌货源优势、极致性价比、五星贴心服务、专属方案定制,企业早已从传统销售商,升级为综合性通讯安防解决方案服务商,全方位解决客户采购难、选型难、售后难、预算…...

2026年装订机工厂选择:最新权威排名与专业推荐。

在当前的广东装订机工厂领域,市场环境正经历着前所未有的变革。随着技术进步和市场需求的不断变化,传统的选择标准已经难以满足现代企业的复杂需求。许多企业在选择装订机供应商时,往往陷入“价值陷阱”或“认知误区”,导致投资回…...

机器学习可持续性实践指南:从模型优化到绿色AI的工程落地

1. 项目概述:当机器学习遇见可持续性 在过去的十年里,我亲眼见证了机器学习从实验室的“黑科技”演变为驱动各行各业的核心引擎。从推荐系统到自动驾驶,模型的复杂度和规模呈指数级增长,随之而来的是一个我们无法回避的现实&#…...

2026年降AI工具处理速度横评:五款主流工具一万字论文处理时长完整数据报告

2026年降AI工具处理速度横评:五款主流工具一万字论文处理时长完整数据报告 拿同一篇论文,用三款工具分别处理,记录了完整检测数据。 结论先说:嘎嘎降AI(www.aigcleaner.com)效果最稳,价格也最…...

Rocky Linux 9.2 安装避坑指南:解决UEFI引导、分区加密、安装黑屏等常见问题

Rocky Linux 9.2 实战安装排雷手册:从UEFI配置到疑难解析当CentOS转向Stream分支后,Rocky Linux凭借其与RHEL的二进制兼容性和稳定的发布周期,迅速成为企业级环境的首选替代方案。但在实际安装过程中,即便是经验丰富的系统管理员也…...

12.解决刷机 99% 故障:Bootloop 修复 + 分区表重建 + 底层短路触发技巧

摘要 本文面向具备基础电子电路知识与操作系统概念的工程师,系统阐述主流品牌手机刷机与维修的技术体系。涵盖高通、联发科、苹果A系列芯片平台的底层引导流程,提供完整的Fastboot与Download模式操作代码,以及硬件级短路检测与分区表修复方案。所有步骤均经过多机型验证,可…...

实战避坑:在Linux服务器上配置PTP(ptp4l)实现微秒级时间同步的完整流程

实战避坑:在Linux服务器上配置PTP(ptp4l)实现微秒级时间同步的完整流程在分布式系统、金融交易和高频计算场景中,毫秒级的时间同步早已无法满足需求。当系统需要跨多个节点协调操作时,微秒级甚至纳秒级的时间同步成为刚…...

Color与Linear Color

简单来说:Color 是给“人眼”看的颜色,而 Linear Color 是给“电脑(引擎)”算的纯粹数据。在虚幻引擎(以及所有现代 3D 渲染引擎)中,区分这两者是非常核心的图形学概念。下面是它们具体的区别&a…...

环境配置助手 For Mac:macOS环境变量可视化管理工具

环境配置助手 For Mac:macOS环境变量可视化管理工具 本文介绍一款适用于 macOS 的环境变量可视化管理工具,聚焦其核心功能与配置逻辑。 工具简介 环境配置助手 是一款专为 macOS 打造的可视化环境变量管理工具。它通过图形化界面替代传统的命令行编辑方…...

OpenClaw Windows 最新官方安装教程(超简单一键安装)

⚙️ 前置条件 💻 系统:Windows 10 / Windows 11🧩 终端:系统自带 PowerShell 5.0 及以上🌐 网络:正常外网环境✅ 无需提前安装 Node.js、Git,脚本自动补齐 🚀 正式安装步骤打开 Pow…...

浔川代码编辑器 v4.1.0 正式版重磅上线!AI 加持,轻量高效,开箱即用

浔川代码编辑器 v4.1.0 正式版重磅上线!AI 加持,轻量高效,开箱即用基于 Python Tkinter SQLite3 深度打磨,浔川代码编辑器 v4.1.0 正式版今日全面发布!本次迭代全面整合内测优化成果,AI 助手、在线运行、…...

NS-USBLoader完整教程:Switch文件传输与RCM注入一站式解决方案

NS-USBLoader完整教程:Switch文件传输与RCM注入一站式解决方案 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址: https://gitcode.com/…...

企业微信官方API不够用时,还有别的实现方式吗?

一、核心概念:企业微信 iPad 协议是什么?从技术角度看,大家常说的“企业微信 iPad 协议”,可以理解为一种:基于客户端通信逻辑抽象出来的接口方式。简单说就是:企业微信 iPad 端本身在运行时,会…...

数据驱动VS物理模型:随机森林在电动汽车跟驰行为预测中的精度革命

1. 项目概述与核心价值在智能交通和自动驾驶技术快速发展的今天,如何精准地模拟和预测道路上车辆的跟驰行为,成为了一个既基础又关键的研究课题。无论是为了设计更安全的辅助驾驶系统,还是为了构建更真实的交通流仿真环境,一个可靠…...

Java + Spring Boot 操作 Kafka 完整学习指南

前置条件:ZooKeeper 集群 Kafka 集群已启动(3个ZK节点 3个Broker) Broker 地址:172.17.0.7:9092, 172.17.0.7:9093, 172.17.0.7:9094第一阶段:原生 Java API 操作 Kafka目的:理解底层原理,Spr…...