当前位置:   article > 正文

逻辑回归模型——股票客户流失预警模型(2)_股票客户流失数据集

股票客户流失数据集

首先回顾上一章的内容:逻辑回归模型 - 股票客户流失预警模型

代码如下:

  1. # 1.读取数据
  2. import pandas as pd
  3. df = pd.read_excel('股票客户流失.xlsx')
  4. # 2.划分特征变量和目标变量
  5. X = df.drop(['是否流失'],axis=1)
  6. y = df['是否流失']
  7. # 3.划分训练集和测试集
  8. from sklearn.model_selection import train_test_split
  9. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
  10. # 4.模型搭建
  11. from sklearn.linear_model import LogisticRegression
  12. model = LogisticRegression()
  13. model.fit(X_train, y_train)
  14. # 5.模型使用1 - 预测数据结果
  15. y_pred = model.predict(X_test)
  16. print(y_pred[0:100]) # 打印预测内容的前100个看看
  17. # 查看全部的预测准确度
  18. from sklearn.metrics import accuracy_score
  19. score = accuracy_score(y_pred, y_test)
  20. print(score) # 打印整体的预测准确度
  21. # 6.模型使用2 - 预测概率
  22. y_pred_proba = model.predict_proba(X_test)
  23. print(y_pred_proba[0:5]) # 打印前5个客户的分类概率

接下来学习:

模型评估方法 - ROC曲线与KS曲线

1.分类模型的评估方法 - ROC曲线

  1. from sklearn.metrics import confusion_matrix
  2. m = confusion_matrix(y_test, y_pred) # 传入预测值和真实值
  3. print(m)

  1. a = pd.DataFrame(m, index=['0(实际不流失)', '1(实际流失)'], columns=['0(预测不流失)', '1(预测流失)'])
  2. a

 

  1. from sklearn.metrics import classification_report
  2. print(classification_report(y_test, y_pred)) # 传入预测值和真实值

 

2.  案例实战 - 评估股票客户流失预警模型

y_pred_proba[:,1]

  1. # 1.计算ROC曲线需要的假警报率(fpr)、命中率(tpr)及阈值(thres)
  2. from sklearn.metrics import roc_curve
  3. fpr, tpr, thres = roc_curve(y_test, y_pred_proba[:,1])
  1. # 2.查看假警报率(fpr)、命中率(tpr)及阈值(thres)
  2. a = pd.DataFrame() # 创建一个空DataFrame
  3. a['阈值'] = list(thres)
  4. a['假警报率'] = list(fpr)
  5. a['命中率'] = list(tpr)
  6. a.head()

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

 

  1. # 4.求出模型的AUC值
  2. from sklearn.metrics import roc_auc_score
  3. score = roc_auc_score(y_test, y_pred_proba[:,1])
  4. score

 对阈值取值的理解

max(y_pred_proba[:,1])

  1. a = pd.DataFrame(y_pred_proba, columns=['分类为0概率', '分类为1概率'])
  2. a = a.sort_values('分类为1概率', ascending=False)
  3. a.head(15)

 

3.KS曲线绘制

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

  1. plt.plot(thres[1:], tpr[1:])
  2. plt.plot(thres[1:], fpr[1:])
  3. plt.plot(thres[1:], tpr[1:] - fpr[1:])
  4. plt.xlabel('threshold')
  5. plt.legend(['tpr', 'fpr', 'tpr-fpr'])
  6. plt.gca().invert_xaxis()
  7. plt.show()

 

  1. # KS值对应的阈值
  2. a['TPR-FPR'] = a['命中率'] - a['假警报率']
  3. a.head()

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/584281
推荐阅读
相关标签
  

闽ICP备14008679号