利用机器学习进行金融数据风险评估(3)

简介: 利用机器学习进行金融数据风险评估(3)
  • 检查是否有空值


for col in var_all:
    x = transaction_risk_sample[col].isnull().sum()
    if x != 0:
        print(col, x)
循环遍历每一个列
统计当前列的空值数据
得到rat_timelong_lst_avg这个列有47个空值


image.png


  • 填充空值 用均值填充 训练和预测样本集都需要做处理


rat_timelong_lst_avg_mean = np.mean(transaction_risk_sample['rat_timelong_lst_avg'])#获取该列的均值
transaction_risk_sample['rat_timelong_lst_avg'].fillna(rat_timelong_lst_avg_mean, inplace = True) #对训练集补充空值
transaction_risk_score_sample['rat_timelong_lst_avg'].fillna(rat_timelong_lst_avg_mean, inplace = True) #对训练集补充空值


  • 异常值处理


观察到所有的变量都是数值型(原数据未给出具体变量信息,只能从数据类型上判断)
由于未给出具体变量信息,无法判断是否异常值,故此处不做异常值处理


  • 分组操作


transaction_risk_sample.groupby(['cnt_result', 'target']).size()
先以cnt_result字段分组 再根据target字段分组 最后统计每一组的大小
和数据库分组的概念是一样的


image.png


  • 导入画图的库


import matplotlib.pyplot as plt
import seaborn as sns


如果报错


ImportError: No module named 'seaborn'


安装此库


pip3 install seaborn


  • 画图探索每组违约率差异


df = pd.DataFrame() #创建一个新的表
df['total'] = transaction_risk_sample.groupby(['type_lst_login'])['target'].count() #计算每组的总数
df['bad'] = transaction_risk_sample.groupby(['type_lst_login'])['target'].sum() #计算每组违约总数
df['default_rate'] = df['bad']/df['total'] #计算每组违约率
df = df.reset_index()
sns.barplot(data = df, x = 'type_lst_login', y = 'default_rate')


image.png


简单分析下这个逻辑


1、对样本结果表 transaction_risk_sample 先按照type_lst_login最后登陆时间分组 再按照target(是否违约 1违约0没有违约)进行分组
得到每一个登陆时间用户是否违约的情况
2、count()是包含target为0和1的情况 即每一个登陆时间内访问的用户数(总数)
3、sum() 仅包含target=1的情况 对所有的1进行求和 得到的是每一个登陆时间内 违约的用户数
4、每组违约的用户数 / 总数 得到每组的违约率
5、reset_index 设置索引 加快数据处理速度
6、barplot画图  x轴是登陆时间 y轴是每个登陆时间的违约率


  • 对于连续型变量做箱线图 观察数据分布


var_num = []
for col in transaction_risk_sample.columns:
    x =  transaction_risk_sample[].nunique() #观察每个变量里有多少个不同的值
    print(col, x)
    var_num.append(col)


image.png


代码分析


训练遍历每一个列
获取当前列的不同值个数


  • 箱线图


plt.boxplot(transaction_risk_sample['city_lst_login'])
获取city_lst_login最后的登陆城市这一列数据画箱线图


image.png



相关文章
|
4天前
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
21 8
|
18天前
|
机器学习/深度学习 数据采集 数据处理
谷歌提出视觉记忆方法,让大模型训练数据更灵活
谷歌研究人员提出了一种名为“视觉记忆”的方法,结合了深度神经网络的表示能力和数据库的灵活性。该方法将图像分类任务分为图像相似性和搜索两部分,支持灵活添加和删除数据、可解释的决策机制以及大规模数据处理能力。实验结果显示,该方法在多个数据集上取得了优异的性能,如在ImageNet上实现88.5%的top-1准确率。尽管有依赖预训练模型等限制,但视觉记忆为深度学习提供了新的思路。
22 2
|
2月前
|
机器学习/深度学习 存储 人工智能
揭秘机器学习背后的神秘力量:如何高效收集数据,让AI更懂你?
【10月更文挑战第12天】在数据驱动的时代,机器学习广泛应用,从智能推荐到自动驾驶。本文以电商平台个性化推荐系统为例,探讨数据收集方法,包括明确数据需求、选择数据来源、编写代码自动化收集、数据清洗与预处理及特征工程,最终完成数据的训练集和测试集划分,为模型训练奠定基础。
50 3
|
2月前
|
机器学习/深度学习 算法 Python
“探秘机器学习的幕后英雄:梯度下降——如何在数据的海洋中寻找那枚失落的钥匙?”
【10月更文挑战第11天】梯度下降是机器学习和深度学习中的核心优化算法,用于最小化损失函数,找到最优参数。通过计算损失函数的梯度,算法沿着负梯度方向更新参数,逐步逼近最小值。常见的变种包括批量梯度下降、随机梯度下降和小批量梯度下降,各有优缺点。示例代码展示了如何用Python和NumPy实现简单的线性回归模型训练。掌握梯度下降有助于深入理解模型优化机制。
30 2
|
2月前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
78 1
|
2月前
|
机器学习/深度学习 数据采集 自然语言处理
机器学习【金融风险与风口评估及其应用】
机器学习【金融风险与风口评估及其应用】
80 6
|
2月前
|
机器学习/深度学习 算法 搜索推荐
机器学习及其应用领域【金融领域】
机器学习及其应用领域【金融领域】
46 5
|
2月前
|
机器学习/深度学习 算法 API
机器学习入门(六):分类模型评估方法
机器学习入门(六):分类模型评估方法
|
3月前
|
机器学习/深度学习 算法 数据挖掘
Python数据分析革命:Scikit-learn库,让机器学习模型训练与评估变得简单高效!
在数据驱动时代,Python 以强大的生态系统成为数据科学的首选语言,而 Scikit-learn 则因简洁的 API 和广泛的支持脱颖而出。本文将指导你使用 Scikit-learn 进行机器学习模型的训练与评估。首先通过 `pip install scikit-learn` 安装库,然后利用内置数据集进行数据准备,选择合适的模型(如逻辑回归),并通过交叉验证评估其性能。最终,使用模型对新数据进行预测,简化整个流程。无论你是新手还是专家,Scikit-learn 都能助你一臂之力。
140 8
|
3月前
|
机器学习/深度学习 数据采集 监控
探索机器学习:从数据到决策
【9月更文挑战第18天】在这篇文章中,我们将一起踏上一段激动人心的旅程,穿越机器学习的世界。我们将探讨如何通过收集和处理数据,利用算法的力量来预测未来的趋势,并做出更加明智的决策。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和思考方式。
下一篇
无影云桌面