信用卡客户风险评估-聚类分析实验报告(python)

一、主要作业内容:

1.数据读取:根据数据文件类型以及数据探索、数据处理和聚类实验的要求,读取数据并处理为符合要求的格式。必须提供代码和结果截图
2.数据探索与数据处理:根据之前讲过的实验《数据探索》的内容,查看数据的基本统计特征情况和拓展统计特征情况,根据之前做过的实验《Pandas统计分析基础与数据预处理》中的内容,查看数据是否存在缺失值、异常值、重复值,如果存在,进行相应处理(这个具体怎么做之前给你们的材料里都有)。必须提供代码和结果截图
3.kmeans聚类分析:按照实验《Sklearn操作与聚类分析模型构建与评价》中的数据处理和聚类分析流程,以第二步中处理完成的数据作为本次聚类分析实验的输入数据,完成数据聚类分析任务。必须提供代码和结果截图。
4.按照要求认真完成实验,提交完整实验报告和对应的完整代码文件。

二、源代码:



#coding=gbk
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans #导入kmeans算法
data=pd.read_csv('E:\\python\\大数据实验\\data\\credit_card.csv',encoding='GBK')
#查看数据集情况:
data.info()
data.describe()


###历史行为特征
#划分出历史行为特征数据
data_active=data.iloc[:,[2,3,4,6,7,8]]
#定义聚类特征数据
data_means=data.iloc[:,[0]]
#查看历史行为特征数据集情况:
data_active.describe()
data_active.info()
#计算评分 数值越低,评分越低
def GetScore(x):
    if x>=2:
        a =0
    else:
        a =1
    return 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

###经济风险情况特征
# 划分出经济风险情况特征数据
data_encomic = data.iloc[:, [5, 18, 19, 21, 22]]
# 查看经济风险情况特征数据情况
data_encomic.describe()
data_encomic.info()


# 借款额度分数
def GetScore_encomic(x):
    if x >= 2:
        a = 1
    else:
        a = 0
    return 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)

###收入风险情况特征
data_shouru=data.iloc[:,[14,17,20]]
#查看收入风险情况特征数据情况
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)


####聚类分析
#标准化构建的三个特征数据集

sc_X = StandardScaler()
data_means_stander = sc_X.fit_transform(data_means.iloc[:,[1,2,3]])
#聚类训练

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)

#查看聚类中心
kmeans_model.cluster_centers_


#保存客户的类别标签
data_means['lable']=kmeans_model.labels_

#统计不同类别样本的数目
r1 = pd.Series(kmeans_model.labels_).value_counts()


data_means.to_csv("mean.csv",index=False,sep=',', encoding="utf_8_sig")
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
信用卡客户风险评估是银行业务中非常重要的一项工作,因为它可以帮助银行识别高风险客户,从而更好地控制信用风险。聚类分析是一种常用的数据挖掘技术,可以帮助银行对客户进行分类,帮助银行更好地理解客户的行为特征。 在Python中,可以使用Scikit-learn库进行聚类分析。以下是使用K-means算法进行聚类分析的代码示例: ```python import pandas as pd from sklearn.cluster import KMeans from sklearn.preprocessing import StandardScaler # 读取数据 data = pd.read_csv('credit_card.csv') # 数据预处理 scaler = StandardScaler() X = scaler.fit_transform(data.drop('ID', axis=1)) # 聚类分析 kmeans = KMeans(n_clusters=3, random_state=42).fit(X) labels = kmeans.labels_ data['Cluster'] = labels # 输出聚类结果 print(data.groupby('Cluster').mean()) ``` 在这个示例中,我们首先读取了一个名为credit_card.csv的数据集,该数据集包含客户信用卡使用情况。然后,我们对数据进行了标准化处理,以确保每个特征具有相同的重要性。接下来,我们使用K-means算法进行聚类分析,并将分配的类别标签添加到数据中。最后,我们输出每个类别的平均值,以便更好地理解每个类别的行为特征。 需要注意的是,聚类分析只是一种数据挖掘技术,它不能直接告诉银行客户的信用风险。银行需要结合其他因素,如客户的收入、还款记录等因素,综合评估客户的信用风险。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我慢慢地也过来了

谢谢大佬的投喂

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值