超赞的学习笔记——《Python深度学习6:预测顾客是否流失》

目录

► 前言

► 程式码讲解

►小结


► 前言

前一篇博客“Python深度学习5 :Tensorflow 1.15 MobileNet-SSD 口罩辨识模型训练”介绍如何训练口罩辨识模型,这次来讲讲预测分析,使用Google Colab进行模型训练与评估,关于平台介绍请参考“Python深度学习1:Google Colab介绍”。

顾客流失,例如信用卡公司发的信用卡,如果一直都没有配套活动,容易造成客户转移至其他银行,如果今天透过一些活动挽留到即将离开的顾客,还能找到新的用户,藉此提升营收。

► 程式码讲解

先在Kaggle下载Churn_Modelling.csv资料集,包含10000笔顾客资讯,将资料集放入Google drive,使用Google Colab连接云端硬碟,并开始以下步骤:

1.读取档案

import pandas
cm = pandas.read_csv('/content/drive/MyDrive/Churn_Modelling.csv', header = 0)
print(cm.head())
cm.isna().sum()

2.选出必要栏位,会发现Geography、Gender及Gender栏位的内容为英文字串,需要做数据清洗,替换为数字,若不替换则无法训练,程式码如下:

cm = cm.iloc[ : , 3 : ]
cm.head()

3.将字串栏位内的资料取出,替换为数字代号,结果如下:

geo = pandas.get_dummies(cm['Geography'])
del geo['France']
gender = pandas.get_dummies(cm['Gender'])
del gender['Female']
cm['Gender'].replace({'Male':1, 'Female':0})
cm2 = pandas.concat([geo, gender, cm], axis = 1)
cm2.drop(['Geography', 'Gender'], axis = 1, inplace=True)
cm2.head()

4.使用cm2产生X, y

y = cm2.iloc[:, -1]
X = cm2.iloc[:, :-1]
print(X.head())
y.head()

5.将资料进行标准化处理,别切割资料集,比例为7:3

from sklearn.model_selection import train_test_split
train_X, test_X, train_y, test_y = train_test_split(X,y, test_size = 0.3, random_state = 42)

6.将资料区分为训练与测试资料集

from sklearn.preprocessing import StandardScaler
import numpy as np
def sigmoid_function(x):
    return 1/ (1 + np.exp(-x))

sigmoid_function(train_X['Balance'])
train_X['Balance']
sc = StandardScaler()
train_X = sc.fit_transform(train_X)
test_X = sc.transform(test_X)

7.使用Keras 建立深度学习模型,并训练模型

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Dense
model = Sequential()
model.add(Dense(5, activation = 'relu', input_shape = (11,)))
model.add(Dense(1, activation = 'sigmoid'))
model.summary()

model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])

history = model.fit(train_X, train_y,
batch_size = 128,
epochs = 100,
verbose = 1,
validation_data = (test_X, test_y))

8.评估模型准确度

from sklearn.metrics import accuracy_score
model.evaluate(test_X,test_y)
pred_y = (model.predict(test_X) > 0.5).astype(int).flatten()
accuracy_score(test_y, pred_y)

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(test_y, pred_y)
print (cm)

横向是测试集,纵向是预测结果

也可以透过矩阵计算结果,全部加起来为3000,将(2335+264)/3000=0.8663

9.设定一个客户资讯,透过模型预测客户是否解约。
假设A客户讯息如下:

Geography: France
Credit Score: 600
Gender: Male
Age: 40 years old
Tenure: 3 years
Balance: $30000
Number of Products: 2
Has credit card ? Yes
Is Active Member: Yes
Estimated Salary: $25000

new_prediction = model.predict(sc.transform(np.array([[0.0, 0, 600, 1, 40, 3, 30000, 2, 1, 1, 25000]])))
new_prediction = (new_prediction > 0.5)
print(new_prediction)

将资讯转换为矩阵,使用模型预测结果,答案是客户A不会解约。

假设B客户讯息如下:

Geography: France
Credit Score: 5
Gender: Male
Age: 35 years old
Tenure: 3 years
Balance: $30000
Number of Products: 0
Has credit card ? Yes
Is Active Member: Yes
Estimated Salary: $25000

new_prediction = model.predict(sc.transform(np.array([[0.0, 0, 5, 0, 35, 3, 30000, 0, 1, 1, 25000]])))
new_prediction = (new_prediction > 0.5)
print(new_prediction)

答案是客户B会解约。

►小结

以上就是顾客是否流失的模型训练及评估,资料的清洗非常重要,大家在实作的过程中需要多注意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值