【毕业设计】金融大数据分析与可视化 您所在的位置:网站首页 数据分析与可视化课程设计论文 【毕业设计】金融大数据分析与可视化

【毕业设计】金融大数据分析与可视化

2024-07-12 18:12| 来源: 网络整理| 查看: 265

文章目录 0 前言1 金融风控一.题目理解1.1.题目概况1.2数据概况1.3预测指标 三.查看数据四.分类指标计算示例4.1混淆矩阵4.2准确度4.3precision(精确度),recall(召回率),f1-score4.4P-R曲线4.5ROC曲线4.6AUC曲线4.7KS值 五.数据分析5.1基本信息5.2查看数据集中特征缺失值,唯一值等5.3查看特征的数值类型有哪些,对象类型有哪些5.3.1数值连续型变量分析5.3.2非数值类别型变量分析5.3.3总结: 5.4变量分布可视化5.4.1单一变量分布可视化5.4.2根绝y值不同可视化x某个特征的分布5.4.3时间格式数据处理及查看5.4.4掌握透视图可以让我们更好的了解数据5.4.5用pandas_profiling生成数据报告5.4.6总结 六.特征工程6.1导入包并读取数据6.2数据预处理6.2缺失值填充6.3时间格式处理6.4类别特征处理6.5异常值处理6.6数据分桶6.7特征编码6.8特征选择 最后

0 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 金融大数据分析与可视化

🥇学长这里给一个题目综合评分(每项满分5分)

难度系数:3分工作量:3分创新点:3分

🧿 选题指导, 项目分享:

https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md

1 金融风控 一.题目理解 1.1.题目概况1.2数据概况1.3预测指标 二.数据来源三.查看数据四.分类指标计算示例 4.1混淆矩阵4.2准确度4.3precision(精确度),recall(召回率),f1-score4.4P-R曲线4.5ROC曲线4.6AUC曲线4.7KS值 五.数据分析 5.1基本信息5.2查看数据集中特征缺失值,唯一值等5.3查看特征的数值类型有哪些,对象类型有哪些 5.3.1数值连续型变量分析5.3.2非数值类别型变量分析5.3.3总结: 5.4变量分布可视化 5.4.1单一变量分布可视化5.4.2根绝y值不同可视化x某个特征的分布5.4.3时间格式数据处理及查看5.4.4掌握透视图可以让我们更好的了解数据5.4.5用pandas_profiling生成数据报告5.4.6总结 六.特征工程 6.1导入包并读取数据6.2数据预处理6.2缺失值填充6.3时间格式处理6.4类别特征处理 6.5异常值处理6.6数据分桶6.7特征编码6.8特征选择 一.题目理解 1.1.题目概况

该数据来自某信贷平台的贷款记录,总数据量超过120w,包含47列变量信息,其中15列为匿名变量。为了保证比赛的公平性,将会从中抽取80万条作为训练集,20万条作为测试集A,20万条作为测试集B,同时会对employmentTitle、purpose、postCode和title等信息进行脱敏。

1.2数据概况

一般而言,对于数据在比赛界面都有对应的数据概况介绍(匿名特征除外),说明列的性质特征。了解列的性质会有助于我们对于数据的理解和后续分析。 Tip:匿名特征,就是未告知数据列所属的性质的特征列。

train.csv

id 为贷款清单分配的唯一信用证标识

loanAmnt 贷款金额

term 贷款期限(year)

interestRate 贷款利率

installment 分期付款金额

grade 贷款等级

subGrade 贷款等级之子级

employmentTitle 就业职称

employmentLength 就业年限(年)

homeOwnership 借款人在登记时提供的房屋所有权状况

annualIncome 年收入

verificationStatus 验证状态

issueDate 贷款发放的月份

purpose 借款人在贷款申请时的贷款用途类别

postCode 借款人在贷款申请中提供的邮政编码的前3位数字

regionCode 地区编码

dti 债务收入比

delinquency_2years 借款人过去2年信用档案中逾期30天以上的违约事件数

ficoRangeLow 借款人在贷款发放时的fico所属的下限范围

ficoRangeHigh 借款人在贷款发放时的fico所属的上限范围

openAcc 借款人信用档案中未结信用额度的数量

pubRec 贬损公共记录的数量

pubRecBankruptcies 公开记录清除的数量

revolBal 信贷周转余额合计

revolUtil 循环额度利用率,或借款人使用的相对于所有可用循环信贷的信贷金额

totalAcc 借款人信用档案中当前的信用额度总数

initialListStatus 贷款的初始列表状态

applicationType 表明贷款是个人申请还是与两个共同借款人的联合申请

earliesCreditLine 借款人最早报告的信用额度开立的月份

title 借款人提供的贷款名称

policyCode 公开可用的策略代码=1新产品不公开可用的策略代码=2

n系列匿名特征 匿名特征n0-n14,为一些贷款人行为计数特征的处理

1.3预测指标

竞赛采用AUC作为评价指标。AUC(Area Under Curve)被定义为 ROC曲线 下与坐标轴围成的面积。

分类算法常见的评估指标如下: 1、混淆矩阵(Confuse Matrix)

(1)若一个实例是正类,并且被预测为正类,即为真正类TP(True Positive ) (2)若一个实例是正类,但是被预测为负类,即为假负类FN(False Negative ) (3)若一个实例是负类,但是被预测为正类,即为假正类FP(False Positive ) (4)若一个实例是负类,并且被预测为负类,即为真负类TN(True Negative ) 2、准确率(Accuracy) 准确率是常用的一个评价指标,但是不适合样本不均衡的情况。

在这里插入图片描述

在这里插入图片描述

8、AUC(Area Under Curve) AUC(Area Under Curve)被定义为 ROC曲线 下与坐标轴围成的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。AUC越接近1.0,检测方法真实性越高;等于0.5时,则真实性最低,无应用价值。

对于金融风控预测类常见的评估指标如下: 1、KS(Kolmogorov-Smirnov) KS统计量由两位苏联数学家A.N. Kolmogorov和N.V. Smirnov提出。在风控中,KS常用于评估模型区分度。区分度越大,说明模型的风险排序能力(ranking ability)越强。 K-S曲线与ROC曲线类似,不同在于

ROC曲线将真正例率和假正例率作为横纵轴 K-S曲线将真正例率和假正例率都作为纵轴,横轴则由选定的阈值来充当。 公式如下: 在这里插入图片描述 在这里插入图片描述

三.查看数据

train = pd.read_csv('train.csv') testA = pd.read_csv('testA.csv') print('Train data shape:',train.shape) print('TestA data shape:',testA.shape) train.head()

Train data shape: (800000, 47) TestA data shape: (200000, 46)

在这里插入图片描述

四.分类指标计算示例 4.1混淆矩阵

## 混淆矩阵 import numpy as np from sklearn.metrics import confusion_matrix y_pred = [0, 1, 0, 1] y_true = [0, 1, 1, 0] print('混淆矩阵:\n',confusion_matrix(y_true, y_pred))

在这里插入图片描述

4.2准确度

## accuracy from sklearn.metrics import accuracy_score y_pred = [0, 1, 0, 1] y_true = [0, 1, 1, 0] print('ACC:',accuracy_score(y_true, y_pred))

ACC: 0.5

4.3precision(精确度),recall(召回率),f1-score

## Precision,Recall,F1-score from sklearn import metrics y_pred = [0, 1, 0, 1] y_true = [0, 1, 1, 0] print('Precision',metrics.precision_score(y_true, y_pred)) print('Recall',metrics.recall_score(y_true, y_pred)) print('F1-score:',metrics.f1_score(y_true, y_pred))

Precision 0.5

Recall 0.5

F1-score: 0.5

4.4P-R曲线

## P-R曲线 import matplotlib.pyplot as plt from sklearn.metrics import precision_recall_curve y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1] y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1] precision, recall, thresholds = precision_recall_curve(y_true, y_pred) plt.plot(precision, recall)

在这里插入图片描述

4.5ROC曲线

## ROC曲线 from sklearn.metrics import roc_curve y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1] y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1] FPR,TPR,thresholds=roc_curve(y_true, y_pred) plt.title('ROC') plt.plot(FPR, TPR,'b') plt.plot([0,1],[0,1],'r--') plt.ylabel('TPR') plt.xlabel('FPR')

在这里插入图片描述

4.6AUC曲线

## AUC import numpy as np from sklearn.metrics import roc_auc_score y_true = np.array([0, 0, 1, 1]) y_scores = np.array([0.1, 0.4, 0.35, 0.8]) print('AUC socre:',roc_auc_score(y_true, y_scores))

AUC socre: 0.75

4.7KS值

## KS值 在实际操作时往往使用ROC曲线配合求出KS值 from sklearn.metrics import roc_curve y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1] y_true = [0, 1, 1, 0, 1, 0, 1, 1, 1, 1] FPR,TPR,thresholds=roc_curve(y_true, y_pred) KS=abs(FPR-TPR).max() print('KS值:',KS)

KS值: 0.5238095238095237

五.数据分析 5.1基本信息

data_train.info()

在这里插入图片描述

总体粗略的查看数据集各个特征的一些基本统计量

data_train.describe()

在这里插入图片描述

​ ​

data_train.head(3).append(data_train.tail(3))

在这里插入图片描述

5.2查看数据集中特征缺失值,唯一值等

查看缺失值

print(f'There are {data_train.isnull().any().sum()} columns in train dataset with missing values.')

There are 22 columns in train dataset with missing values.

上面得到训练集有22列特征有缺失值,进一步查看缺失特征中缺失率大于50%的特征

have_null_fea_dict = (data_train.isnull().sum()/len(data_train)).to_dict() fea_null_moreThanHalf = {} for key,value in have_null_fea_dict.items(): if value > 0.5: fea_null_moreThanHalf[key] = value

具体的查看缺失特征及缺失率

# nan可视化 missing = data_train.isnull().sum()/len(data_train) missing = missing[missing > 0] missing.sort_values(inplace=True) missing.plot.bar()

在这里插入图片描述

纵向了解哪些列存在 “nan”, 并可以把nan的个数打印,主要的目的在于查看某一列nan存在的个数是否真的很大,如果nan存在的过多,说明这一列对label的影响几乎不起作用了,可以考虑删掉。如果缺失值很小一般可以选择填充。另外可以横向比较,如果在数据集中,某些样本数据的大部分列都是缺失的且样本足够的情况下可以考虑删除。

Tips: 比赛大杀器lgb模型可以自动处理缺失值,Task4模型会具体学习模型了解模型哦!

查看训练集测试集中特征属性只有一值的特征

one_value_fea = [col for col in data_train.columns if data_train[col].nunique()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有