文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

机器学习:基于逻辑回归(Logistic Regression)对股票客户流失预测分析

2023-08-31 16:46

关注

在这里插入图片描述

基于逻辑回归对股票客户流失预测分析

作者:i阿极

作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪



文章目录


1、逻辑回归模型原理

逻辑回归(Logistic Regression)是一种二分类的监督学习算法,用于预测样本的概率属于某一类别的概率。相比于线性回归,逻辑回归可以更好地处理分类问题。

逻辑回归的核心思想是,通过对样本特征进行线性组合,得到一个连续的预测值,然后通过一个函数将其映射到0和1之间的概率值。这个映射函数通常采用Sigmoid函数,其数学表达式为:
在这里插入图片描述

其中 y y y为线性组合的结果, e e e为自然常数。在这里插入图片描述

逻辑回归模型的数学表达式为:
在这里插入图片描述

其中, θ \theta θ是需要学习的参数, x x x是输入的样本特征向量。

我们的目标是最大化训练样本的似然函数,即:
在这里插入图片描述

其中, m m m是训练样本数, y ( i ) y^{(i)} y(i)为样本 i i i的真实标签。

在这里插入图片描述

我们的目标是最大化对数似然函数,即:
在这里插入图片描述

可以使用梯度下降等优化算法来求解最优参数 θ \theta θ

逻辑回归的优点包括:

逻辑回归的缺点包括:

2、实验环境

python 3.9

anaconda

jupyter notebook

3、模型LogisticRegression函数介绍

LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1,   class_weight=None, random_state=None, solver= 'liblinear',max_iter=100,    multi_class='ovr', verbose=0, warm_start=False, n_jobs=1)

4、逻辑回归实战案例

4.1案例背景

在进行每一笔股票交易的时候,交易者(股民)都是要付给开户所在的证券公司一些手续费的,虽然单笔交易的手续费并不高,然而股票市场每日都有巨额的成交量,使得每一笔交易的手续费汇总起来的数目相当可观,而这一部分收入对于一些证券公司来说很重要,甚至可以占到所有营业收入50%以上,因此证券公司对于客户(也即交易者)的忠诚度和活跃度是很看重的。

如果一个客户不再通过该证券公司交易,也即该客户流失了,那么对于证券公司来说便损失了一个收入来源,因此证券公司会搭建一套客户流失预警模型来预测交易者是否会流失,从而对于流失概率较大的客户进行相应的挽回措施,因为通常情况下,获得新客户的成本比保留现有客户的成本要高的多。

4.2数据读取和数据集划分

读取数据并展示前五行数据

import pandas as pddf = pd.read_excel('股票客户流失.xlsx')df.head()

在这里插入图片描述

划分特征变量和目标变量

X = df.drop(columns='是否流失') y = df['是否流失']   

划分训练集和测试集

from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)  # 设置random_state使得每次划分的数据一样X_train.head()  # 显示训练集X_train的前5行

在这里插入图片描述

4.3模型建立与预测评价

模型搭建

from sklearn.linear_model import LogisticRegressionmodel = LogisticRegression()model.fit(X_train, y_train)

在这里插入图片描述
预测数据结果

y_pred = model.predict(X_test)print(y_pred[0:100])  # 打印预测内容的前100个看看

在这里插入图片描述

放到一个DataFrame里进行查看比对

a = pd.DataFrame()  # 创建一个空DataFrame a['预测值'] = list(y_pred)a['实际值'] = list(y_test)a.head()  # 可以看到此时前5个预测准确度为80%

在这里插入图片描述

看全部的预测准确度

from sklearn.metrics import accuracy_scorescore = accuracy_score(y_pred, y_test)print(score)

在这里插入图片描述
预测概率

y_pred_proba = model.predict_proba(X_test)  y_pred_proba[0:5]

在这里插入图片描述
查看概率的方式

a = pd.DataFrame(y_pred_proba, columns=['不流失概率', '流失概率'])a.head()

在这里插入图片描述
查看流失的概率

y_pred_proba[:,1]

在这里插入图片描述

4.4绘制ROC曲线

计算ROC曲线需要的假警报率(fpr)、命中率(tpr)及阈值(thres)

from sklearn.metrics import roc_curvefpr, tpr, thres = roc_curve(y_test, y_pred_proba[:,1])a = pd.DataFrame()  # 创建一个空DataFrame a['阈值'] = list(thres)a['假警报率'] = list(fpr)a['命中率'] = list(tpr)a.head()

在这里插入图片描述

绘制ROC曲线

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文plt.plot(fpr, tpr)  # 通过plot()函数绘制折线图plt.title('ROC曲线')  # 添加标题,注意如果要写中文,需要在之前添加一行代码:plt.rcParams['font.sans-serif'] = ['SimHei']plt.xlabel('FPR')  # 添加X轴标签plt.ylabel('TPR')  # 添加Y轴标plt.show()

在这里插入图片描述

求出模型的AUC值

from sklearn.metrics import roc_auc_scorescore = roc_auc_score(y_test, y_pred_proba[:,1])score

在这里插入图片描述


📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

来源地址:https://blog.csdn.net/AOAIYI/article/details/130337209

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯