ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

从零手写逻辑回归:Beginner-Data-Science-Projects客户流失预测的实现原理(新手友好)

从零手写逻辑回归: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),仅供参考
返回列表