从零手写逻辑回归:Beginner-Data-Science-Projects客户流失预测的实现原理(新手友好)
从零手写逻辑回归Beginner-Data-Science-Projects客户流失预测的实现原理新手友好【免费下载链接】Beginner-Data-Science-ProjectsThis repository is a curated collection of hands-on data science projects tailored for beginners. Whether youre just starting your journey in data science or looking to strengthen your skills, these projects provide a practical and interactive way to apply your knowledge.项目地址: https://gitcode.com/gh_mirrors/beg/Beginner-Data-Science-ProjectsBeginner-Data-Science-Projects 是一个面向新手的数据科学实战项目合集其中的 Customer Churn客户流失预测项目没有调用任何现成的分类器而是完全从零手写逻辑回归自己实现 Sigmoid 函数、代价函数与梯度下降训练出一个测试集准确率高达 88.9% 的二分类模型并用它预测新客户的流失风险。本文用通俗易懂的方式带你彻底看懂这个客户流失预测项目的实现原理。一、客户流失预测要解决什么问题先讲一个小故事某营销代理公司为大量客户网站制作广告最近发现客户跑单流失现象严重。公司目前只是随机分配客户经理希望用一个机器学习模型来回答哪些客户最可能流失好让我们优先给他们安排客户经理。于是他们提供了两份数据一份是带有历史流失标签的记录一份是没有标签的新客户——模型训练完成后要直接上线去预测这些新客户会不会流失。这正是分类任务中的经典问题——二分类目标变量只有两个取值1 流失0 未流失。为什么逻辑回归是这类问题的首选逻辑回归Logistic Regression虽然名字里有回归其实是一个分类模型它有三个天然优势输出是概率直接给出流失的可能性0~1 之间方便按风险高低排序可解释性强每个特征的权重能直接看出它对流失的影响方向和大小⚡训练快、门槛低几十行代码就能从零实现是新手理解机器学习的第一站二、先认识项目数据两个 CSV 文件项目位于Classification/Customer Churn/目录下核心文件如下文件作用customer_churn.csv历史数据共 900 条客户记录含流失标签new_customers_1.csv6 位新客户没有标签用来检验模型实战效果customerChurn.ipynb完整实现流程从数据加载到新客户预测README.md项目说明与运行方法历史数据共 9 个字段其中只有 5 个数值型特征会真正进入模型特征含义Age客户年龄Total_Purchase累计广告购买金额Account_Manager是否分配了客户经理0/1Years作为客户多少年Num_Sites使用服务的网站数量Churn标签是否流失1 流失而Names、Location、Company、Onboard_date这些文本字段对模型没有意义会被直接丢弃——只保留数值特征这是手写模型前最朴素也最重要的一步。三、手写逻辑回归3 个小函数就够了整个模型的核心代码只有三个函数全部在 customerChurn.ipynb 中定义。3.1 Sigmoid 函数把任意数值压成概率def sigmoid(z): return 1/(1np.exp(-z))它是一条漂亮的 S 形曲线输入z可以是任意实数输出永远落在 0~1 之间。可以把它理解为翻译官——把特征加权和这种无限量程的数翻译成流失概率z越大概率越接近 1。3.2 代价函数衡量模型错得有多离谱逻辑回归使用**对数损失Log Loss**作为代价函数模型预测的越接近真实标签代价越低预测得离谱比如真实流失却输出 0.01代价就指数级地爆炸。代价函数同时返回梯度grad——告诉模型该往哪个方向调整参数。3.3 梯度下降一步步走向正确答案训练循环只有一行核心更新theta - alpha * grad # 每次朝代价减小的方向挪一小步学习率alpha 0.01迭代 1000 次。每走一步模型都变得更懂数据一点代价曲线一路下降参数theta也就是各特征的权重逐渐收敛。完整预测流程一览![机器学习预测流程示意数据经预处理和模型计算概率后输出客户流失预测结果](https://raw.gitcode.com/gh_mirrors/beg/Beginner-Data-Science-Projects/raw/3b80273620b6f12339b66ecf4789eff36aa5bec9/Computer Vision/Plant Disease CNNs/img/flow1.png?utm_sourcegitcode_repo_files)上图是仓库中一张手绘的机器学习预测管道示意图来自植物疾病分类项目输入数据 → 预处理 → 模型计算概率 → 输出预测结果。客户流失预测项目的流程与之完全同构只是把图片换成了客户特征把Top-1 分类换成了Sigmoid 概率 0.5 阈值。四、训练流程5 个步骤一次跑通notebook 的训练部分按以下顺序组织每一步都只有一两行代码丢弃文本列删掉Names、Location、Company、Onboard_date只留 5 个数值特征划分训练/测试集train_test_split按 8:2 切分random_state42保证结果可复现特征缩放用StandardScaler做标准化——这一步对手写梯度下降尤为关键否则金额上万和年份个位数量级悬殊梯度会偏科补上偏置列在特征矩阵前拼一列 1对应逻辑回归公式里的截距项启动梯度下降theta从全 0 出发迭代 1000 轮跑完之后测试集准确率达到88.9%——一个纯手写、没有任何黑盒的模型已经相当能打了。✅五、模型上线预测 6 位新客户的流失风险最后一步是项目的灵魂把训练好的模型应用到 new_customers_1.csv 中这 6 位没有标签的新客户上。流程与训练时完全一致——同样用scaler.transform缩放、同样补偏置列、同样用 Sigmoid 输出概率概率大于 0.5 判为流失。部分预测结果新客户年龄使用年数网站数预测结果Andrew Mccall377.7180 · 预计不流失Michele Wright239.28151 · 预计流失65 岁、仅 1 年、消费 100651.00151 · 预计流失32 岁、无客户经理329.40141 · 预计流失可以明显看到使用年限短、消费低的客户被标记为高风险——这正是业务方想要的答案也说明手写模型学到的权重是讲道理的。六、如何快速跑通这个项目一键安装步骤克隆仓库git clone https://gitcode.com/gh_mirrors/beg/Beginner-Data-Science-Projects进入项目目录安装依赖pip install -r requirements.txt依赖见 requirements.txt仅需 pandas、numpy、matplotlib、seaborn、scikit-learn用 Jupyter 打开 customerChurn.ipynb从头到尾运行结尾即显示对新客户的预测结果七、写在最后新手能从这个项目学到什么Sigmoid、代价函数、梯度下降——三大组件各只有几行代码手写一遍胜过读十遍教程⚖️特征缩放的重要性量级悬殊的特征会让梯度下降偏科偏置项截距不能少它是模型灵活度的来源训练与预测必须同一条预处理管道缩放参数只能fit一次绝不能重新拟合项目文件索引路径说明Classification/Customer Churn/customerChurn.ipynb完整实现源码Classification/Customer Churn/customer_churn.csv900 条历史数据Classification/Customer Churn/new_customers_1.csv6 位待预测新客户Classification/Customer Churn/README.md项目说明文档如果你刚接触机器学习建议按先读懂三个函数 → 自己敲一遍 → 换一组特征重跑的顺序来这是把这个客户流失预测项目价值榨干的最好方式。【免费下载链接】Beginner-Data-Science-ProjectsThis repository is a curated collection of hands-on data science projects tailored for beginners. Whether youre just starting your journey in data science or looking to strengthen your skills, these projects provide a practical and interactive way to apply your knowledge.项目地址: https://gitcode.com/gh_mirrors/beg/Beginner-Data-Science-Projects创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

几十块的OpenClaw部署服务拆解:TaoToken统一Key接入与config.toml骨架

几十块的OpenClaw部署服务拆解:TaoToken统一Key接入与config.toml骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 21:54:21 阅读更多 →
车载测试三层结构:信号、功能与系统层解析

车载测试三层结构:信号、功能与系统层解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 5:05:36 阅读更多 →
Cursor 接入 MCP 配置实战:协议原理、应用场景与故障排查

Cursor 接入 MCP 配置实战:协议原理、应用场景与故障排查

有一说一,刚接触 Cursor 里的 MCP 配置时,我是被一堆概念绕晕的:MCP 到底是什么协议,server 怎么启动,为什么明明配置了却调不动……等我实际把第一组 MCP server 跑起来,才发现这事的难度不在于“敲命令”…

2026/10/1 8:32:07 阅读更多 →

最新新闻

SpringBoot+SSM健身房管理系统开发实战:从环境搭建到毕设答辩

SpringBoot+SSM健身房管理系统开发实战:从环境搭建到毕设答辩

前阵子一个学弟找到我,说要复现一套"基于JavaSpringBootSSM的健身房管理系统"做毕业设计,他从网上下了一份源码,结果环境搭了三天都没跑起来,数据库脚本报错,Tomcat端口冲突,看到满屏异常日志整个…

2026/10/2 21:54:00 阅读更多 →
JMeter压测报错Address already in use:从端口耗尽到TCP连接复用的根治方案

JMeter压测报错Address already in use:从端口耗尽到TCP连接复用的根治方案

我在压测组里泡了这么多年,几乎每周都能在群里看到有人贴出这么一行日志:java.net.BindException: Address already in use: connect第一次遇到的人基本都会懵,明明被测服务还好好的,怎么压测机先罢工了?更诡异的是&am…

2026/10/2 21:54:00 阅读更多 →
Unity点击事件与UI穿透冲突的通用修正方案

Unity点击事件与UI穿透冲突的通用修正方案

站在Unity开发者的角度,点击事件和UI“打架”这个问题,尤其是“UI弹出时穿透点击到场景物体”“按钮连点触发多次”这两个症状,几乎每个项目都会遇到。我最早做2D手游的时候就吃过亏:玩家疯狂点“关闭”按钮,结果把按钮…

2026/10/2 21:54:00 阅读更多 →
AI编程工具三强对决:Cursor、Copilot与Claude Dev实战解析

AI编程工具三强对决:Cursor、Copilot与Claude Dev实战解析

最近在技术社群里看到一条很有意思的提问:公司打算统一AI编程工具,有人推荐无脑上Cursor,有人坚持GitHub Copilot才是最稳的选择,还有一小撮人悄悄用Claude Dev(现在很多人也叫它Claude Code的VS Code形态)…

2026/10/2 21:54:00 阅读更多 →
Linux head命令实战:从日志排查到管道组合用法

Linux head命令实战:从日志排查到管道组合用法

在Linux终端里摸爬滚打这些年,如果让我从常用命令里挑一个最被低估、却又最高频用到的,我大概率会选head。你测试一个新接口返回的响应,可能只需要看前几行;你在排查一个几GB的日志文件,不会傻到直接cat,第…

2026/10/2 21:54:00 阅读更多 →
工业智能网关实战:破解生产黑箱,打通设备数据采集最后一公里

工业智能网关实战:破解生产黑箱,打通设备数据采集最后一公里

干了这么多年产线数据采集,说实话,我见过太多车间主任站在一排设备前面,说不上来机器现在在干嘛。问今天产量多少,靠班长喊;问设备为什么停了,翻交接班记录;问这台注塑机昨晚空跑了多久&#xf…

2026/10/2 21:52:59 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 6:09:11 阅读更多 →