逻辑回归实现客户逾期分析
一、【 目标】
构建逻辑回归模型进行预测用户是否逾期
二、【 任务分析】
- 首先,由于数据中存在缺失值,因此需要对缺失值数据进行预处理。
- 其次,对明显与模型无关的特征进行删除
- 最后,采用逻辑回归模型进行模型训练。
三、【 原始数据】
数据:金融数据
任务:我们要做的是预测贷款用户是否会逾期,
标签说明:表格中,status是标签:0表示未逾期,1表示逾期。
四、【 数据预处理】
一共4754行,89列(除去首行、首列)
- 直接删除,对模型影响不大的数据及特征,比如固定的个人信息
列:custid、trade_no、bank_card_no、id_name
行:删除很多项特征缺失的用户信息
缺失特征数据的用户数据:apply_score等到最后一个特征全为缺失项的用户数据 - 特征转换:特征student_feature列的NA转为0,2转为0(2只有2个)
- 几个需考虑的因素
城市:境外0,一线1,二线2,三线3,四线4,NA及其他(共4组数据,删除) - 现阶段不进行处理而直接删除的列:比如 first_transaction_time,latest_query_time,loans_latest_time
五、【代码实现】
代码部分由yezuolin完成
1、调包、导入数据以及数据替换
# coding=utf-8"""1. 导包"""
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import f1_score,r2_score"""2. 读取数据"""
dataset = pd.read_csv('./data/data.csv',encoding='gbk')"""3. 数据处理"""
# 删除固定信息列
dataset = dataset.drop(["custid","trade_no","bank_card_no","id_name","first_transaction_time","latest_query_time","loans_latest_time","source"],axis=1)
# 对于sstudent_feature列,我们进行NAN转成0,2转为0
# 缺失值填充
dataset["student_feature"] = dataset["student_feature"].fillna(0)
# 2替换为0
dataset["student_feature"] = dataset["student_feature"].replace([2],[0])# 针对城市列'reg_preference_for_trad',进行数据替换
dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("一线城市", "1")
dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("二线城市", "2")
dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("三线城市", "3")
dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("其他城市", "4")
dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("境外", "0")
2、填充缺失值
# 填充其他空值
# 使用均值进行填充
# dataset.fillna(dataset.mean(), inplace=True)
# 使用众数进行填充
dataset = dataset.fillna(0) # 使用 0 替换所有 NaN 的值
col = dataset.columns.tolist()[1:]def missing(df, columns):"""使用众数填充缺失值df[i].mode()[0] 获取众数第一个值"""col = columnsfor i in col:df[i].fillna(df[i].mode()[0], inplace=True)df[i] = df[i].astype('float')missing(dataset, col)# 将object类型转成folat
dataset = dataset.convert_objects(convert_numeric=True)
3、数据划分
X = dataset.drop(["status"],axis=1)
Y = dataset["status"]# 数据按正常的2、8划分
X_train, X_test, y_train, y_test = train_test_split(X, Y,test_size=0.2, random_state=666)
# not enough values to unpack (expected 4, got 2)from sklearn.preprocessing import minmax_scale # minmax_scale归一化,缩放到0-1
X_train = minmax_scale(X_train)
X_test = minmax_scale(X_test)
# Input contains NaN, infinity or a value too large for dtype('float64').
4、数据归一化
from sklearn.preprocessing import minmax_scale
# 归一化,缩放到0-1
X_train = minmax_scale(X_train)
X_test = minmax_scale(X_test)
5、模型训练
log_reg = LogisticRegression()
log_reg.fit(X_train, y_train)
y_predict = log_reg.predict(X_test)
6、输出结果
print("predict:",log_reg.score(X_test, y_test))
print("f1_score:",f1_score(y_test, y_predict))
print("r2_score:",r2_score(y_test, y_predict))
最后我们得到的结果如下:
六、【遇到的问题】
1、对特征工程的分析不够深入,在特征选择上还可以更详细更优化
2、在用均值填充NAN时,进行归一化出现了 Input contains NaN, infinity or a value too large for dtype(‘float64’),在使用众数填充后避免了这个问题。
3、划分训练集和测试集时可以选择不同的比例和次数重复进行几次,这样得到的结果更具有统计意义。
逻辑回归实现客户逾期分析相关推荐
- python回归预测例子_案例实战 | 逻辑回归实现客户流失预测(附Python代码与源数据)...
关注一下~,更多商业数据分析案例等你来撩 前言 利用逻辑回归进行客户流失预警建模中涵盖了许多比较细的知识点,思维导图只展示了极小的一部分,相关知识点链接将穿插在文中.(源数据源代码空降文末获取) 数据 ...
- 数据挖掘—逻辑回归分类—信用卡欺诈分析
文章目录 1.分析目的: 2.掌握要点: 3.构建逻辑回归分类器 4.模型评估指标 5.精确度和召回率(不平衡数据衡量指标) 6.案例分析: 1.分析目的: 信用卡欺诈的危害性大,如何通过遗忘的交易数 ...
- 【Python】逻辑回归变量的显著性分析
模型结果的解释 coef:回归系数(Regression coefficient),即模型参数 β0.β1.-的估计值. std err :标准差( Standard deviation),也称标准偏 ...
- [深度学习]Python/Theano实现逻辑回归网络的代码分析
2014-07-21 10:28:34 首先PO上主要Python代码(2.7), 这个代码在Deep Learning上可以找到. 1 # allocate symbolic variables f ...
- 逻辑回归对信用卡欺诈进行分析
文章目录 逻辑回归分类器 模型评估指标 混淆矩阵 使用逻辑回归对信用卡欺诈分析进行预测 逻辑回归分类器 逻辑回归,也叫作 logistic 回归.虽然名字中带有"回归",但它实际 ...
- 银行定期存款产品目标客户的确定——基于逻辑回归
本篇文章将会介绍用Python分析银行定期存款产品目标客户的确定详细建模细节,业务框架分析以及模型的选择与评估分析参见上一篇文章: 银行定期存款产品目标客户的确定--基于逻辑回归(建模前分析) 1.导 ...
- Coursera吴恩达《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归...
转至:https://blog.csdn.net/red_stone1/article/details/77851177 上节课我们主要对深度学习(Deep Learning)的概念做了简要的概述.我 ...
- 逻辑回归实例--乳腺癌肿瘤预测
文章目录 0.前言 1.导入数据 2.数据预处理 3.准备训练测试数据 4. 标准化数据 5.逻辑回归模型 6.性能分析 7.十折交叉验证 0.前言 环境:Python3.6.5 编译器:jupyte ...
- Coursera吴恩达《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归
红色石头的个人网站:redstonewill.com 上节课我们主要对深度学习(Deep Learning)的概念做了简要的概述.我们先从房价预测的例子出发,建立了标准的神经网络(Neural Net ...
最新文章
- python使用input函数时、必须添加提示文字-Python中使用 input 函数来获取输入
- 国家计算机科学进展,高等学校计算机一级学科教学改革与科学办学最新进展.pdf...
- python创建多个文件_Python创建文件夹与文件的快捷方法
- PicoDet论文译读笔记
- ofo 辟谣滴滴收购;美团饿了么回应数据泄露;金立转战海外 | CSDN 极客头条
- torch 默认参数初始化_Detection学习之九-torch中如何定义优化器及调整学习率
- MCSA/MCSE Windows Server 2016认证的学习目录
- C语言rs485编程,- 第六讲 单片机之c语言RS485通信
- 禁用hiberfil.sys文件
- UART串口传图LCD显示----图像处理
- css 三角角标样式
- 低功耗设计及其UPF实现第四节(最后一节)
- 公司内网成功实现WSUS在不连外网的条件下更新补丁包!
- Android 音视频开发实践系列-04-Android WebRTC推流到SRS服务器实现直播功能
- 千万不要死于无知—几条健康忠告(三)
- git branch常用分支操作
- 从YouTube删除不合适的评论
- 易基因:m6A mRNA甲基化修饰调控CTNNB1促进肝母细胞瘤增殖的机制研究|Mol Cancer
- samsung magician下载中文网址
- 入行必看:游戏行业发展概况