1.处理数据异常值:
(1) 丢弃逾期,呆账,强制停卡,退票记录,拒往记录为 1 ,瑕疵户为 2 的记录 。
(2) 丢弃呆账,强制停卡,退票为 1 ,拒往记录为 2 的记录。
(3) 丢弃频率为 5 ,刷卡金额不等于 1 的数据。

import pandas as pd
import numpy as np
data=pd.read_csv("credit_card.csv",encoding='gbk')
#查看数据集情况:
#data.info()
#data.describe()
print("原数据的形状为",data.shape)
# 丢弃逾期,呆账,强制停卡,退票,拒往记录为 1 ,瑕疵户为 2 的记录。
ind1 = data['逾期'] == 1
ind2 = data['呆账'] == 1
ind3 = data['强制停卡记录'] == 1
ind4 = data['退票'] == 1
ind5 = data['拒往记录'] == 1
ind6 = data['瑕疵户'] == 2
data2 = ind1&ind2&ind3&ind4&ind5&ind6
data3 = data.loc[data2,:]
data4 = data.loc[data2 == False,:]
print(' 逾期,呆账,强制停卡,退票记录,拒往记录为 1 , \
瑕疵户为 2 的数据形状为: ',data3.shape)
print(' 删除逾期,呆账,强制停卡,退票记录,拒往记录为 1 , \
瑕疵户为 2 的记录后 , 数据的形状为: ',data4.shape)
# 丢弃呆账,强制停卡,退票为 1 ,拒往记录为 2 的记录
ind7 = data4['拒往记录'] == 2
data5 = ind2&ind3&ind4&ind7
data6 = data4.loc[data5 == False,:]
print(' 删除呆账,强制停卡,退票为 1 ,拒往记录为 2 的记录后, \
数据的形状为: ',data6.shape)
# 丢弃频率为 5 ,刷卡金额不等于 1 的数据
ind8 = data6['频率'] == 5
ind9 = data6['月刷卡额'] !=1
data7 = ind8&ind9
data8 = data6.loc[data7 == False,:]
print(' 删除频率为 5 ,刷卡金额不等于 1 的记录后,数据的形状为: ',data8.shape)
data8.to_csv('data8.csv')

2.特征工程:
(1) 据特征瑕疵户,逾期,呆账,强制停卡,退票,拒往记录构建历史行为特征。
(2) 根据特征借款余额,个人月收入,个人月开销,家庭月收入和月刷卡金额,构建出经济风险情况特征。
(3) 根据特征职业,年龄,住家,构建出收入风险情况特征。
(4) 标准化历史行为,经济风险情况,收入风险情况特征。

import os
import numpy as np
import pandas as pd
data8 = pd.read_csv('data8.csv',encoding='utf-8',index_col=0, engine = 'python')
# 构建历史行为特征
card_selection1 = data8[['瑕疵户','逾期','呆账','强制停卡记录','退票','拒往记录']]
print('历史行为特征前5行数据为: \n',card_selection1.head())# 构建经济风险情况特征
card_selection2 = data8[['借款余额','个人月收入','个人月开销','家庭月收入','月刷卡额']]
print('经济风险情况特征前5行数据为: \n',card_selection2.head())# 构建收入风险情况特征
card_selection3 = data8[['职业','年龄','住家']]
print('收入风险情况特征前5行数据为: \n',card_selection3.head())#特征合并,选取完所需的特征之后,将相关特征列合并
# 合并历史行为、经济风险情况、收入风险情况特征
card_features = pd.concat([card_selection1,card_selection2,card_selection3], axis=1)
print(' 构建 L 、 F 、 S 特征前 5 个特征为: \n',card_features.head())#特征标准化,由于聚类模型并不需要划分数据集,标准化可以使用 sklearn 的 preprocessing 模块
from sklearn.preprocessing import StandardScaler
data9 = StandardScaler().fit_transform(card_features)
np.savez('card_scale.npz',data9)
print(' 标准化后的 LFS 模型的前 5 个特征为 :\n',data9[:5,:])

3.构建历史行为特征,划分出历史行为特征数据:

import pandas as pd
import numpy as np
data=pd.read_csv("data8.csv",encoding='gbk')#已经进行数据清洗
#查看数据集情况:
data.info()
data.describe()
#(1) 据特征瑕疵户,逾期,呆账,强制停卡,退票,拒往记录构建历史行为特征。
data_active=data.iloc[:,[2,3,4,6,7,8]]
#定义聚类特征数据
data_means=data.iloc[:,[0]]
#查看历史行为特征数据集情况:
print("查看历史行为特征数据集情况:")
data_active.describe()
data_active.info()
#计算评分 数值越低,评分越低
def GetScore(x):if x>=2:a =0else:a =1return a
score_1=data_active['瑕疵户'].apply(GetScore)
score_2=data_active['逾期'].apply(GetScore)
score_3=data_active['呆账'].apply(GetScore)
score_4=data_active['退票'].apply(GetScore)
score_5=data_active['拒往记录'].apply(GetScore)
score_6=data_active['强制停卡记录'].apply(GetScore)
#加权求和  历史行为
data_means.loc[:,'history_credit_risk']=score_1+score_2*2+score_3*3+score_4*3+score_5*3+score_6

4.构建经济风险情况特征

#划分出经济风险情况特征数据
data_encomic=data.iloc[:,[5,18,19,21,22]]
#查看经济风险情况特征数据情况
print("查看经济风险情况特征数据情况")
data_encomic.describe()
data_encomic.info()
#借款额度分数
def GetScore_encomic(x):if x>=2:a =1else:a =0return a
score_yu=data_encomic['月刷卡额'].apply(GetScore_encomic)
#个人月收入情况分数
data_person=data_encomic['个人月收入']/data_encomic['个人月开销']
data_person_Scores=[]
for i in range(data_encomic.shape[0]):if data_person[i]<1:data_person_Scores.append(0)else:data_person_Scores.append(1)
#家庭月收入情况分数
data_mouth=data_encomic['家庭月收入']/data_encomic['月刷卡额']
data_mouth_Scores=[]
for i in range(data_encomic.shape[0]):if data_person[i]<1:data_mouth_Scores.append(0)else:data_mouth_Scores.append(1)
#经济风险
data_means['economic_risk']=np.array(data_mouth_Scores) + np.array(data_person_Scores)+np.array(score_yu)

5.构建收入风险情况特征

data_shouru=data.iloc[:,[14,17,20]]
#查看收入风险情况特征数据情况
print("查看收入风险情况特征数据情况")
data_shouru.describe()
data_shouru.info()
#住家评分
HouseScore = []
for i in range(data_shouru.shape[0]):if 3 <= data_shouru.loc[i, '住家'] <= 5:HouseScore.append(0)else:HouseScore.append(1)
#职业评分
JobScore = []
for i in range(data_shouru.shape[0]):if(data_shouru.loc[i, '职业'] <= 7) | (data_shouru.loc[i, '职业'] == 19) | (data_shouru.loc[i, '职业'] == 21):JobScore.append(2)if(data_shouru.loc[i, '职业'] >= 8) & (data_shouru.loc[i, '职业'] <= 11):JobScore.append(1)if(data_shouru.loc[i,  '职业']  <=  18)  &  (data_shouru.loc[i,  '职业']  >=  12)  |  (data_shouru.loc[i,  '职业']  ==  20)  | (data_shouru.loc[i, '职业'] == 22):JobScore.append(0)
#年龄评分
AgeScore = []
for i in range(data_shouru.shape[0]):if data_shouru.loc[i, '年龄'] <= 2:AgeScore.append(1)else:AgeScore.append(0)
#收入风险
data_means['income_risk'] = np.array(HouseScore) + np.array(JobScore) + np.array(AgeScore)

6.聚类分析

#标准化构建的三个特征数据集
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
data_means_stander = sc_X.fit_transform(data_means.iloc[:,[1,2,3]])
#聚类训练
from sklearn.cluster import KMeans #导入kmeans算法
k = 5 ## 确定聚类中心数
#构建模型
kmeans_model = KMeans(n_clusters = k,n_jobs=4,random_state=123)
fit_kmeans = kmeans_model.fit(data_means_stander)   #模型训练
#客户特征分析排名
data_means['count']=data_means['income_risk']+data_means['economic_risk']+data_means.loc[:,'history_credit_risk']
sort_values=data_means.sort_values("count",inplace=False)#查看聚类中心
c1=kmeans_model.cluster_centers_
print('查看聚类中心:\n',c1)
#保存客户的类别标签
data_means['lable']=kmeans_model.labels_
l1=data_means['lable']
print('查看样本的类别标签:\n',l1)
#统计不同类别样本的数目
r1 = pd.Series(kmeans_model.labels_).value_counts()
print('最终每个类别的数目为:\n',r1)
# 输出聚类分群的结果
cluster_center = pd.DataFrame(c1,columns = ['income_risk','economic_risk','history_credit_risk',])   # 将聚类中心放在数据框中
cluster_center.index = pd.DataFrame(l1).drop_duplicates().iloc[:,0]  # 将样本类别作为数据框索引
print(cluster_center)
#data_means.to_csv("mean.csv",index=False,sep=',', encoding="utf_8_sig")

数据分析课后作业--信用卡客户风险评价(代码)相关推荐

  1. 大数据之Python数据分析 实训 信用卡客户风险评价之二、构建信用卡客户风险评价关键特征

    构建信用卡客户风险评价关键特征 实训数据:https://pan.baidu.com/s/1RduW2P0UtdgvQowIu26u7A 1 实训目标 (1) 掌握评分卡模型的原理. (2) 构建信用 ...

  2. 大数据之Python数据分析 实训 信用卡客户风险评价之一、处理信用卡数据异常值

    一.处理信用卡数据异常值 实训数据:https://pan.baidu.com/s/1RduW2P0UtdgvQowIu26u7A 1 实训目标 (1) 掌握异常值的识别与处理方法. (2) 构建信用 ...

  3. 构建信用卡客户风险识别模型

    构建信用卡客户风险识别模型 需求说明: 为了推进信用卡业务良性发展减少坏账风险,各大银行都进行了信用卡客户风险识别的相关工作,减少坏账风险,各大银行都进行了信用卡客户风险识别的相关工作.某银行研究的风 ...

  4. 信用卡客户风险分析与评价

    1.处理信用卡数据异常值 1.训练要点 (1)熟悉信用卡的基本业务知识. (2)掌握异常值的识别与处理方法. 2.需求说明 为了推进信用卡业务良性发展,减少坏账风险,各大银行都进行了信用卡客户风险识别 ...

  5. R语言实训项目——信用卡客户风险分析

    实训1 处理信用卡数据异常值(数据预处理) (1)读取信用卡数据. #读取数据 credit <- read.csv('F:/R-Project/data/credit_card.csv') ( ...

  6. 信用卡迎来史上最强风控?利用数据挖掘进行信用卡评分,提高银行的客户风险识别能力

    **下半年,信用卡圈却又发生了一次大的地震.**多家银行开始严格管控使用信用卡,论坛和网上各种哀嚎,很多卡友遇到刷卡限制.降额,甚至封卡. 这是为什么呢? 根< 2020年第一季度支付体系运行总 ...

  7. 银行信用卡客户价值分析(Python数据分析)

    import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.cluster import KMe ...

  8. python信用卡客户_信用卡客户画像 作业讲解1

    信用卡客户画像 作业讲解1 信用卡客户画像 作业讲解1 获取请求类型 在很多情况下面,我们需要判断当前操作的请求类型是GET.POST.PUT.DELETE或者HEAD,一方面可以针对请求类型作出不同 ...

  9. python第四章课后答案4.7_Python数据分析实战作业 第四章 Python数据分析实战 习题...

    第四章 Python数据分析实战 习题(数据见附件sizhang.xlsx) 班主任现有一班级的两张表,如下. 表一:成绩表 学 号C#线 代Python 16010203788896 表二:信息表 ...

最新文章

  1. 机器学习系列 5:特征缩放
  2. BZOJ 1003 物流运输trans dijstra+dp
  3. Windows端5款MySQL客户端工具
  4. Web- HTML网页颜色大全
  5. hbase命令行演示
  6. 中国人工智能学会通讯——基于视频的行为识别技术 1.1 什么是行为
  7. tensorboard可视化经常出现的两个问题
  8. oracle大数据量迁移,分批量导入样例(fetch...bulk collect)以及forall结合使用
  9. sql运算符_SQL运算符
  10. [译]Javascript中的mutators
  11. SD卡驱动(详细介绍,不明白的人可以仔细看看了.有流程图)
  12. Google Colab 挂载 Google Drive
  13. 银河麒麟v10_备受瞩目的银河麒麟v10系统究竟好不好?开箱测评瞬间明了
  14. 自考深圳大学本科难吗?亲身经历分享
  15. python读书心得体会范文_读书心得体会范文6篇
  16. python求偏导_python中几种自动微分库解析
  17. java课程论文_Java课程论文.doc
  18. 用Linux做wifi热点/无线路由
  19. 【TCP】Recv-Q和Send-Q 不要在有什么误解了
  20. php上传图片到mysql并显示

热门文章

  1. 百度网盘开放平台接入(Python)
  2. linux下的工具移植到windows下
  3. 夏令营+预推免小结(中南 东南 浙大)
  4. 【从零开始数学建模(1)】第一章 建立数学模型~导论
  5. 前端基础(一)_前端页面构成
  6. MyBaitsPlus快速入门,java进阶书籍推荐
  7. MCU基础以及RTOS原理知识分享
  8. javaWeb项目部署到远程服务器(windows服务器)
  9. 快速了解位运算符——与()、非(~)、或(|)、异或(^)
  10. JavaScript风格指南