金融大数据分析-第7、8章-银行客户流失预警分析、银行卡盗刷风险预警分析_第1页
金融大数据分析-第7、8章-银行客户流失预警分析、银行卡盗刷风险预警分析_第2页
金融大数据分析-第7、8章-银行客户流失预警分析、银行卡盗刷风险预警分析_第3页
金融大数据分析-第7、8章-银行客户流失预警分析、银行卡盗刷风险预警分析_第4页
金融大数据分析-第7、8章-银行客户流失预警分析、银行卡盗刷风险预警分析_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

07银行客户流失预警分析主要内容主要目标与问题分解7.1相关知识与理论基础7.2业务需求分析7.3数据理解7.4数据探索与分析7.5生成客户交易行为数据7.6构建客户流失风险模型7.7模型的应用部署7.8本章主要介绍银行客户流失及其建模分析的相关知识及理论,根据客户的基本信息与基金交易记录构建客户流失风险指标体系,建立客户流失风险预警模型,进行模型的应用部署。银行可以根据预警模型提供的潜在流失客户名单,及时指派客户经理有针对性地挽留潜在的流失客户。银行客户流失预警分析第七章银行客户流失预警分析7.1.1主要目标通过分析银行客户的个人基本信息以及过去一段时间内的交易明细,构建客户流失风险体系,根据客户流失风险体系建立客户流失风险预警模型,通过对构建的模型进行评估与分析,预测客户是否可能流失。7.1主要目标与问题分解第七章银行客户流失预警分析1业务理解7.1.2问题分解2数据预处理5模型的应用部署3选取和构建客户流失风险指标4客户流失风险预警模型建立、预测及评价第七章银行客户流失预警分析7.2.1银行客户流失方式银行客户流失的方式有两种:1.客户自然流失2.客户转移流失7.2.2银行客户流失因素分析引起商业银行客户流失的原因有很多,主要可以分为内部环境因素和外部环境因素两种。7.2相关知识与理论基础第七章银行客户流失预警分析7.2.3流失客户行为分析1流失客户最近一次购买金融产品和上一次购买金融产品的时间间隔较长,最近一次卖出金融产品和上一次卖出金融产品的时间间隔较短。23流失客户近期购买金融产品的总次数或总金额较少,卖出金融产品的总次数或总金额较多。流失客户近期购买或卖出金融产品的总次数或总金额与过去同期相比存在明显变化。流失客户与非流失客户相比存在以下显著区别第七章银行客户流失预警分析潜在的流失客户是指正在逐渐出清之前购买的金融产品,但目前还未完成所有交易,尚有挽回空间的客户。也就是说,我们假设客户流失前,客户将会逐步清空已经开通的银行业务,转移资产到其他银行,最终在某个业务或本银行体系中完全流失。7.3业务需求分析第七章银行客户流失预警分析7.4数据理解为了识别哪些客户是潜在的可能流失的客户,需要从银行历史积累的业务数据中,分析和研究客户的基本信息、业务交易等特征,区分出既往已流失客户的特征,用全面数据描述刻画客户的业务特点。银行开展的业务虽然多种多样,这些业务都可以简单地理解为给客户提供金融产品的进销存服务,都可以利用相同的RFM理论划分为不同的交易行为层次,从而能轻松识别哪些客户是高端客户,哪些客户正在降低金融产品的交易频度,哪些客户可能有流失的风险。第七章银行客户流失预警分析案例以银行业务中的基金销售业务为例,以RFM理论为指导,从基金交易流水中提取流失特征变量,构建基金客户流失预警模型。本例整合了客户基本信息和基金交易持仓信息,这些给定的数据是根据原始数据已经脱敏处理后的数据。客户信息表特征类型含义CUSTNOIDString客户编号(关联字段)CUSTTYPEString客户类型1:个人、0:机构ZIPCODEString邮编SEXString性别0:男、1:女BIRTHDAYString出生日期LOSSLABELString客户流失标签

1:流失、0:保有基金交易持仓信息表特征类型含义DATETime交易日期BUSINFLAGString交易类型CUSTNOIDString客户编号(关联字段)CUSTTYPEString客户类型:1:个人0:机构FUNDCODEString基金代码AGENCYNOString渠道NETNOString网点OCCURSHARESNumeric交易份额:正值为买入,负值为卖出,0可忽略LASTSHARESNumeric持仓份额第七章银行客户流失预警分析本节的主要目的是对原始数据进行探索分析和初步预处理。首先,读取客户数据集,引入pandas和numpy包,调用pandas的read_csv()方法读入csv数据,参数填写数据的路径。读入客户信息数据CUSTOMER.csv与客户交易数据SHARES.csv7.5数据探索与分析python代码:importpandasaspdimportnumpyasnpcustomer_df=pd.read_csv('CUSTOMER.csv')shares_df=pd.read_csv('SHARES.csv')第七章银行客户流失预警分析7.5.1客户数据的描述性统计python代码:customer_df.describe(include='all')shares_df.describe(include='all')交易持仓信息表的数据集统计信息第七章银行客户流失预警分析7.5.1客户数据的描述性统计python代码:customer_df.describe(include='all')shares_df.describe(include='all')客户交易表的数据集统计信息第七章银行客户流失预警分析通过分析客户数据的统计信息可以判断,统计信息中某些变量的count数值小于其他列,即这些变量存在缺失值,从图7-2所示结果可以看出,变量SEX、BIRTHDAY、ZIPCODE存在空值。7.5.2客户数据缺失值填充python代码:customer_df['SEX'].fillna(value=0,inplace=True)customer_df.to_csv('customer1.csv',index=False)customer_df=pd.read_csv('customer1.csv')customer_df.describe(include='all')第七章银行客户流失预警分析填充后再次查看数据集统计信息,可以发现SEX列的缺失值已经全部填充完毕(SEX列,count=1000),填充后的数据集统计信息如图7-3所示。7.5.2客户数据缺失值填充图

7-3缺失值填充后的数据集统计信息第七章银行客户流失预警分析7.5.3客户数据异常值过滤python代码:customer_df=customer_df[customer_df['SEX'].isin(['0','1'])]customer_df.describe(include='all')过滤异常数据后的数据集统计信息第七章银行客户流失预警分析Numpy包的unique()方法可查看数据集中某一列的取值,参数return_counts代表是否返回各个取值的数据条数。7.5.4观察数据集是否均衡python代码:np.unique(customer_df['LOSSLABEL'],return_counts=True)查询返回LOSSLABEL列的取值和各个取值的数据条数,结果如图所示。第七章银行客户流失预警分析SHARES.csv数据文件提供了基金客户在2013年5月到2013年10月间的交易记录。基于之前的业务分析,本例将这一时间段分为5-6月、7-8月、9-10月三个时期,构建客户在每一期的买入次数、买入金额、卖出次数、卖出金额、持仓份额,以及本期与前一期的买入次数变化、买入金额变化、卖出次数变化、卖出金额变化、期末持仓份额变化,将这些反映客户交易行为和交易特征的数据提取出来,分析流失客户的交易行为特征,为预警模型的建立提供支持。7.6生成客户交易行为数据第七章银行客户流失预警分析客户交易行为变量主要指客户在不同时间段内的买入次数、卖出次数、买入金额、卖出金额以及持仓份额。为方便根据交易时间对交易数据进行过滤,将DATE列设置为时间类型,并将该列作为dataframe的索引。7.6.1生成客户交易行为数据python代码:shares_df['DATE']=pd.to_datetime(shares_df['DATE'])shares_df=shares_df.set_index('DATE')为了计算一段时期内客户的买入次数、卖出次数、买入金额、卖出金额,我们定义了四个变量。python代码:defbuy_count(x):returnnp.sum(1ifi>0else0foriinx)defbuy_sum(x):returnnp.sum(iifi>0else0foriinx)defsale_count(x):returnnp.sum(1ifi<0else0foriinx)defsale_sum(x):returnnp.sum(-iifi<0else0foriinx)第七章银行客户流失预警分析1客户5-6月的交易行为数据23客户7-8月的交易行为数据客户9-10月的交易行为数据下面,我们分别生成5-6月、7-8月、9-10月三个时间段的客户交易行为数据,分析客户交易行为。第七章银行客户流失预警分析1.客户5-6月的交易行为数据python代码:shares_df_5_6=shares_df['2013-5':'2013-6'].groupby('CUSTNOID').agg({'OCCURSHARES':[buy_count,buy_sum,sale_count,sale_sum]}).OCCURSHARESshares_df_5_6['CUSTNOID']=shares_df_5_6.indexshares_df_5_6.rename(columns={'buy_count':'五六月买入次数','buy_sum':'五六月买入金额','sale_count':'五六月卖出次数','sale_sum':'五六月卖出金额'},inplace=True)shares_df_5_6['6月末持仓份额']=shares_df_5_6['五六月买入金额']-shares_df_5_6['五六月卖出金额']shares_df_5_6.describe(include='all')5-6月的客户交易特征数据第七章银行客户流失预警分析1.客户7-8月的交易行为数据python代码:shares_df_7_8=shares_df['2013-7':'2013-8'].groupby('CUSTNOID').agg({'OCCURSHARES':[buy_count,buy_sum,sale_count,sale_sum]}).OCCURSHARESshares_df_7_8['CUSTNOID']=shares_df_7_8.indexshares_df_7_8.rename(columns={'buy_count':'七八月买入次数','buy_sum':'七八月买入金额','sale_count':'七八月卖出次数','sale_sum':'七八月卖出金额'},inplace=True)shares_df_7_8['8月末持仓份额']=shares_df_7_8['七八月买入金额']-shares_df_7_8['七八月卖出金额']shares_df_7_8.describe(include='all')7-8月的客户交易特征数据第七章银行客户流失预警分析1.客户9-10月的交易行为数据python代码:shares_df_9_10=shares_df['2013-9':'2013-10'].groupby('CUSTNOID').agg({'OCCURSHARES':[buy_count,buy_sum,sale_count,sale_sum]}).OCCURSHARESshares_df_9_10['CUSTNOID']=shares_df_9_10.indexshares_df_9_10.rename(columns={'buy_count':'九十月买入次数','buy_sum':'九十月买入金额','sale_count':'九十月卖出次数','sale_sum':'九十月卖出金额'},inplace=True)shares_df_9_10['10月末持仓份额']=shares_df_9_10['九十月买入金额']-shares_df_9_10['九十月卖出金额']shares_df_9_10.describe(include='all')9-10月的客户交易特征数据第七章银行客户流失预警分析1过滤变量7.6.2客户交易数据整合23表联接操作缺失值填充python代码:df=pd.DataFrame(customer_df,columns=['CUSTNOID','CUSTTYPE','SEX','LOSSLABEL'])df=pd.merge(df,shares_df_5_6,on='CUSTNOID',how='left')df=pd.merge(df,shares_df_7_8,on='CUSTNOID',how='left')df=pd.merge(df,shares_df_9_10,on='CUSTNOID',how='left')df=df.fillna(value=0)df.describe(include='all')第七章银行客户流失预警分析7.6.3生成客户交易行为随时间变化数据python代码:df['第一二期买入次数变化']=df['七八月买入次数']-df['五六月买入次数']df['第一二期买入金额变化']=df['七八月买入金额']-df['五六月买入金额']df['第一二期卖出次数变化']=df['七八月卖出次数']-df['五六月卖出次数']df['第一二期卖出金额变化']=df['七八月卖出金额']-df['五六月卖出金额']df['第一二期期末持仓份额变化']=df['8月末持仓份额']-df['6月末持仓份额']df.describe(include='all')7-107-8月与5-6月期间客户交易变动特征第七章银行客户流失预警分析7.6.4客户交易行为特征汇总表变量名称变量含义CUSTNOID客户编号CUSTTYPE客户类型1:个人、0:机构SEX性别1:男、0:女第一期间内买入次数5-6月内交易频次第一期间内买入金额5-6月内交易额度第一期间内卖出次数5-6月内交易频次第一期间内卖出金额5-6月内交易额度第一期间末持仓份额6月末持仓份额第二期间内买入次数7-8月内交易频次第二期间内买入金额7-8月内交易额度第二期间内卖出次数7-8月内交易频次第二期间内卖出金额7-8月内交易额度第二期间末持仓份额8月末持仓份额第三期间内买入次数9-10月内交易频次第三期间内买入金额9-10月内交易额度第三期间内卖出次数9-10月内交易频次第三期间内卖出金额9-10月内交易额度第三期间内末持仓份额10月末持仓份额第一二期买入次数变化第一二期买入金额变化第二期间内买入金额减去第一期间内买入金额第一二期卖出次数变化第二期间内卖出次数减去第一期间内卖出次数第一二期卖出金额变化第二期间内卖出金额减去第一期间内卖出金额第一二期期末持仓份额变化第二期间内期末持仓份额减去第一期间内期末持仓份额第二三期买入次数变化第三期间内买入次数减去第二期间内买入次数第二三期买入金额变化第三期间内买入金额减去第二期间内买入金额第二三期卖出次数变化第三期间内卖出次数减去第二期间内卖出次数第二三期卖出金额变化第三期间内卖出金额减去第二期间内卖出金额第二三期期末持仓份额变化第三期间内期末持仓份额减去第二期间内期末持仓份额客户流失标签1:流失;0:保有注:这里以2013年5月到2013年10月间的交易记录为例,将每两个月作为一个观测周期,分析客户的交易行为变化。实际应用中以每两个月进行滚动循环统计,以便动态分析数据,随时跟踪客户交易行为的变化。第七章银行客户流失预警分析调用dataframe的sample()方法,参数frac=1.0,代表只打乱数据集的顺序,目的是使数据随机化,避免过度拟合,使预测结果更加准确。12347.7构建客户流失风险模型7.7.1训练集与验证集划分对于训练集和测试集,分别提取数据集中的LOSSLABEL列的数值作为建模标签Y,去除数据集中标签列(LOSSLABEL)与编号列(CUSTNOID),提取其他所有列的数值作为建模特征。最终得到训练集特征X_train,验证集特征X_test,训练集标签Y_train,验证集标签Y_test。调用dataframe的loc方法对数据进行切片处理,三分之二的数据作为训练集,三分之一的数据作为测试集。python代码:df=df.sample(frac=1.0)df_train=df.loc[:int(0.66*df.shape[0])]df_test=df.loc[int(0.66*df.shape[0]):]X_train=df_train.drop(columns=['CUSTNOID','LOSSLABEL']).valuesX_test=df_test.drop(columns=['CUSTNOID','LOSSLABEL']).valuesY_train=df_train['LOSSLABEL'].valuesY_test=df_test['LOSSLABEL'].values第七章银行客户流失预警分析本例是一个二分类问题,可以调用sklearn.linear_model包中的LogisticRegression类建立逻辑回归模型。1逻辑回归模型构建的操作步骤:7.7.1训练集与验证集划分调用LogisticRegression的fit()方法进行模型训练;2调用LogisticRegression的predict()方法对验证集进行预测,得到预测结果prediction_lr。3python代码:fromsklearn.linear_modelimportLogisticRegressionlr=LogisticRegression()lr.fit(X_train,Y_train)prediction_lr=lr.predict(X_test)第七章银行客户流失预警分析使用真值Y_test对预测结果prediction_lr进行评估,评估指标包含在sklearn.metrics包中。1逻辑回归模型验证操作步骤::7.7.1训练集与验证集划分因为本例预测客户流失问题,所以应关注流失标签为1的这类数据的预测情况,所以在f1_score()、recall_score()、precision_score()中填写参数pos_label=1.0,只针对这一类计算评价指标。

2计算混淆矩阵。3绘制pr和roc曲线。4调用sklearn.metrics包的precision_recall_curve()方法和roc_curve()方法,得到绘图数据,调用matplotlib.pyplot包中的plot()方法绘制图表。5第七章银行客户流失预警分析1如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本,作为该树的训练集。23如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的每棵树都尽最大程度的生长,并且没有剪枝过程。每棵树按照如下规则生成:7.7.3随机森林模型构建及验证第七章银行客户流失预警分析1调用sklearn.ensemble包中的RandomForestClassifier类建立随机森林模型。23调用RandomForestClassifier的fit()方法进行模型训练。调用RandomForestClassifier的predict()方法对验证集进行预测,得到预测结果prediction_rf。操作步骤:7.7.3随机森林模型构建及验证第七章银行客户流失预警分析python代码:fromsklearn.ensembleimportRandomForestClassifierrf=RandomForestClassifier(n_estimators=10,max_depth=10)rf.fit(X_train,Y_train)prediction_rf=rf.predict(X_test)python代码:prediction_proba_rf=rf.predict_proba(X_test)precision_rf,recall_rf,_=precision_recall_curve(Y_test,prediction_proba_rf[:,1])plt.plot(recall_rf,precision_rf)plt.xlabel("RecallRate")plt.ylabel("PrecisionRate")plt.show()fpr_rf,tpr_rf,_=roc_curve(Y_test,prediction_proba_rf[:,1])plt.plot(fpr_rf,tpr_rf)plt.xlabel("FalsePositiveRate")plt.ylabel("TruePositiveRate")plt.show()fromsklearn.metricsimport*metrics_rf={'accuracy':accuracy_score(prediction_rf,Y_test),'f1':f1_score(prediction_rf,Y_test,labels=1.0),'recall':recall_score(prediction_rf,Y_test,labels=1.0),'precision':precision_score(prediction_rf,Y_test,labels=1.0)}print(metrics_rf)confusion_matrix_rf=confusion_matrix(Y_test,prediction_rf,labels=labels)print(labels)print(confusion_matrix_rf)第七章银行客户流失预警分析随机森林模型评价指标(一){'accuracy':0.8181818181818182,'f1':0.7428571428571428,'recall':0.7323943661971831,'precision':0.7536231884057971}随机森林模型评价指标(二)随机森林模型评价指标(三)第七章银行客户流失预警分析最终将模型的预测结果与客户编号对应,在此仅展示结果的前10行。python代码:df_predict=pd.DataFrame(df_test,columns=['CUSTNOID'])df_predict['prediction']=prediction_rfdf_predict.head(10)模型的预测结果第七章银行客户流失预警分析7.8模型的应用部署模型创建完成并不是项目的结束,模型的意义在于应用,所以构建的模型还要与实际的业务系统对接。在经过严格的测试及验证后,业务模型需要部署到客户的生产环境,以微服务的形式提供实时的业务请求处理,预测系统将给出流失风险较高的客户名单,银行的业务人员可以根据名单与客户进行沟通、进行定制化营销。风险预警模型训练与应用均需在生产环境定期执行,以保证预警的实时性。在实际应用中模型还需要不断优化。模型的应用部署第七章银行客户流失预警分析08银行卡盗刷风险预警分析主要内容问题概述与目标分解8.1相关知识理论基础8.2业务需求分析8.3数据理解8.4数据预处理与探索分析8.58.6信用卡盗刷识别逻辑回归模型8.6信用卡盗刷识别决策树模型8.7银行卡盗刷识别模型部署8.8银行卡盗刷是指不法分子利用高科技手段复制持卡人的银行卡,或通过窃取持卡人的银行卡账户信息,采用不法手段获取持卡人的交易密码,从而提取现金、刷卡消费或转账,给持卡人造成财产损失的一种违法行为。银行卡盗刷风险预警分析第八章银行卡盗刷风险预警分析8.1.1主要目标以银行信用卡客户的交易记录为数据源,利用专家规则分析信用卡盗刷典型行为特征,通过建立信用卡盗刷识别模型,判断交易风险程度,识别高风险交易行为,通过与银行现有风险系统规则体系相结合,实现银行信用卡盗刷风险预警,当出现危险交易行为时能够及时提醒警示。8.1问题概述与目标分解第八章银行卡盗刷风险预警分析1.业务理解2.数据处理与分析3.建立信用卡盗刷识别的模型4.建立信用卡盗刷识别的树形模型将整个问题分解成如下几个过程:8.1.1主要目标第八章银行卡盗刷风险预警分析1.伪卡盗刷通过摄像头、虚假密码键盘等方式窃取持卡人密码信息。盗取磁条信息和密码后,犯罪分子制作伪卡,进行盗刷交易。2.网络支付盗刷主要通过钓鱼网站、木马诈骗和利用银行网银漏洞诈骗等进行诈骗。8.2相关知识理论基础8.2.1银行卡盗刷的手段第八章银行卡盗刷风险预警分析常见的银行卡盗刷行为识别方法1专家规则识别法23欺诈模式识别法异常行为识别法8.2.2银行卡盗刷行为的识别第八章银行卡盗刷风险预警分析3.交易类信息1.设备类特征信息2.通道类信息8.3业务需求分析跨境盗刷行为专家规则因子主要包括三类特:第八章银行卡盗刷风险预警分析8.4数据理解数据字典变量名变量含义及取值ip在高风险区域0:否1:是2:未知传输等级根据数据传输加密等级取值0-6,含义如下:0:TPK1:TAK2:ZPK3:ZAK4:PVK5:CVK6:MAK卡等级根据卡级别分类,取值1-3,含义如下:1普卡2银卡3金卡4

白金卡线上交易1:是;0:否ip与设备地址匹配1:是;0:否ip在国外1:是;0:否ip为空1:是;0:否设备编码为空1:是;0:否ip异城市1:是;0:否设备异省0:否1:是2:未知设备异城市1:是;0:否高风险交易标识1:是;0:否大额交易等级取值0-35,数值越大,交易额度越大0:1元≤额度<5万元1:5万元≤额度<10万元2:10万元≤额度<20万元3:20万元≤额度<30万元4:30万元≤额度<40万元……35:360万元≤额度其后每个等级相差10万元是否在非正常时间取值0-11,根据需要,风控系统会实时调整规则0:10:00-21:001:9:00-10:00或21:00-22:002:8:30-9:00或22:00-22:303:8:00-8:30或22:30-23:004:7:30-8:00或23:00-23:305:7:00-7:30或23:30-00:006:6:30-7:00或00:00-00:307:6:00-6:30或00:30-01:008:5:30-6:00或01:00-01:309:5:00-5:30或01:30-02:0010:4:30-5:00或02:00-02:3011:4:00-4:30或02:30-03:00第八章银行卡盗刷风险预警分析8.5数据预处理与探索分析python代码:#加载数据集dataset=pd.read_csv("credit_transaction.csv",engine="python")dataset.describe()8.5.1描述性统计分析操作步骤:1.加载数据集,使用pandas的read_csv()函数,读取本案例的数据文件“credit_transaction.csv”。2.使用describe()函数查看数据集的汇总信息。第八章银行卡盗刷风险预警分析8.5.2缺失值填充python代码:#查看缺失值print(dataset.isnull().sum())操作步骤:1.使用DataFrame的isnull()函数判断是否有缺失值。2.通过sum()求和函数统计总的缺失值个数。3.调用函数dropna()进行删除。python代码:#删掉空值dataset=dataset.dropna()#查看是否还有缺失值print(dataset.isnull().sum())第八章银行卡盗刷风险预警分析8.5.3观察数据集是否均衡python代码:dataset.groupby("高风险交易标识").count()数据集中,“高风险交易标识”列有两个取值,分别为0、1,利用groupby()函数可以对数据进行分组,查看银行卡消费信息中“高风险交易标识”的特征。第八章银行卡盗刷风险预警分析8.5.4数据特征及关联性分析python代码:risk_yes=dataset[dataset["高风险交易标识"]==1]risk_yes_count=risk_yes.groupby("ip在国外").count()print("高风险:"+str(risk_yes.shape[0]))count_risk_yes=risk_yes.groupby("ip在国外").count()count_risk_yes_ip_0=count_risk_yes.loc[0,"高风险交易标识"]count_risk_yes_ip_1=count_risk_yes.loc[1,"高风险交易标识"]print("高风险ip在国外:"+str(count_risk_yes_ip_1))print("高风险ip不在国外:"+str(count_risk_yes_ip_0))1.高风险交易数据特征分析第八章银行卡盗刷风险预警分析python代码:importmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=Falselabel=['在国外','不在国外']#定义饼图的标签,标签是列表explode=[0.01,0.01]#设定各项距离圆心n个半径values=[30172,35099]plt.pie(values,explode=explode,labels=label,autopct='%1.1f%%')#绘制饼图plt.title('ip在国外是高风险的占比')#绘制标题plt.show对以上统计结果可以利用图形更直观地展现。第八章银行卡盗刷风险预警分析python代码:risk_no=dataset[dataset["高风险交易标识"]==0]print("非高风险:"+str(risk_no.shape[0]))count_risk_no=risk_no.groupby("ip在国外").count()count_risk_no_ip_0=count_risk_no.loc[0,"高风险交易标识"]count_risk_no_ip_1=count_risk_no.loc[1,"高风险交易标识"]print("非高风险ip在国外:"+str(count_risk_no_ip_1))print("非高风险ip不在国外:"+str(count_risk_no_ip_0))2.统计非高风险交易数据第八章银行卡盗刷风险预警分析python代码:label=['在国外','不在国外']#定义饼图的标签,标签是列表explode=[0.01,0.01]#设定各项距离圆心n个半径values=[6025,28699]plt.pie(values,explode=explode,labels=label,autopct='%1.1f%%')plt.title('ip在国外非高风险的占比')plt.show可视化饼图的代码。第八章银行卡盗刷风险预警分析关联性分析1为了完成高风险盗刷识别逻辑回归模型的探索,本节将问题分解成如下几个步骤:8.7信用卡盗刷识别逻辑回归模型基于关联性进行特征过滤

2设计样本集3使用逻辑回归模型建立信用卡盗刷识别模型4进行模型的预测5使用性能度量进行信用卡盗刷识别模型的评估6第八章银行卡盗刷风险预警分析python代码:#计算协方差datasetCorr=dataset.corr()datasetCorr8.7.1关联性分析1.查看变量之间的相关关系第八章银行卡盗刷风险预警分析python代码:importseabornassnsplt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=Falseplt.figure(figsize=(20,10))sns.heatmap(datasetCorr,annot=False,fmt="float",linewidths=0.5,cmap="RdYlBu")plt.tick_params(labelsize=20)font1={'family':'TimesNewRoman','weight':'normal','size':23,}plt.show()2.变量之间相关关系可视化表达第八章银行卡盗刷风险预警分析python代码:datasetCorr=dataset.corr()["高风险交易标识"]print(datasetCorr)3.计算“高风险交易标识”与其他特征变量的关系第八章银行卡盗刷风险预警分析8.7.2特征过滤python代码:#特征筛选list=list(datasetCorr[(datasetCorr>0.1)|(datasetCorr<-0.1)].keys())datasetCorrSelection=dataset[list]第八章银行卡盗刷风险预警分析案例使用python中用于机器学习的库Scikit-Learn,Scikit-Learn提供了一系列的监督与非监督学习算法的Python接口。Scikit-Learn主要关注数据建模,对于装载、操作、汇总数据方面并不关注。如果要关注这些特性可以参考上面探索过程使用的NumPy库和Pandas库,这些库做的更好。8.7.3逻辑回归模型构建与评估第八章银行卡盗刷风险预警分析逻辑回归模型构建与评估过程包括以下几个步骤。1.数据集切分与模型构建。2.利用模型进行预测。4.利用测试集评判模型的预测效果3.预测模型效果评估。python代码:trainingData=datasetCorrSelection[:int(datasetCorrSelection.shape[0]*0.8)]predictData=datasetCorrSelection[int(datasetCorrSelection.shape[0]*0.8):datasetCorrSelection.shape[0]]fromsklearn.li

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论