客户流失预警模型(1) | 更文挑战

637 阅读3分钟

“这是我参与更文挑战的第17天,活动详情查看: 更文挑战

客户流失预警模型用于预测客户是否会流失,在金融、电信、娱乐游戏等行业都有广泛的应用。这里以金融行业的客户流失预警模型为例来讲解逻辑回归模型在商业实战中的应用。

案例背景

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

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

1.读取数据

通过如下代码读取数据。

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

通过打印df.head()查看前5行数据,结果见下表。

image.png

df中共有约7000组历史数据,其中约2000组为流失客户,约5000组为未流失客户。账户资金即客户通过证券公司用于炒股的金额,交易佣金即手续费,券商即证券公司。因为Python数学建模中无法识别文本内容,所以“是否流失”栏中的内容已做了数值转换处理:0表示未流失,1表示流失

将“是否流失”作为目标变量,其他字段作为特征变量,通过一个客户的一些基本情况和交易记录来预测他是否会流失,或者说判断流失的概率大小。这里为了方便演示,只选取了5个特征变量,在商业实战中用到的特征变量会更多。

2.划分特征变量和目标变量

通过如下代码将特征变量和目标变量单独提取出来。

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

第1行代码用drop()函数删除“是否流失”列,将剩下的数据作为特征变量赋给变量X。第2行代码通过DataFrame提取列的方式提取“是否流失”列作为目标变量,并赋给变量y。

模型的搭建与使用

读取完数据并划分好变量后就可以进行模型的搭建和使用了。

1.划分训练集和测试集

通过如下代码可以将数据划分为训练集和测试集

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_spilt(X,y,test_size=0.2)

结果如下图所示。

image.png

每次运行程序时,train_test_split()函数都会随机划分数据,如果想要让每次划分数据的结果保持一致,可以设置random_state参数,代码如下。

X_train,X_test,y_train,y_test =train_test_split(X,y,test_size=0.2,random_state=1)

其中为random_state参数赋值为1,该数字没有特殊含义,可以换成其他数字,它相当于一个种子参数,使得每次划分数据的结果一致。