金融风控训练营-Task02学习笔记

本学习笔记为阿里云天池龙珠计划金融风控训练营的学习内容,学习链接为:AI训练营金融风控-阿里云天池 (aliyun.com)

 

目录

一、学习知识点概要

二、学习内容

4、生成数据报告

三、学习问题与解答

四、学习思考与总结


 

一、学习知识点概要

经过数据挖掘的第一个步骤信息分析后,接下来便是对所获得的数据进行处理,通常包括:选择数据、数据清洗、数据构建和数据转换。选择数据是从全部数据里面,选出有用的、有价值的信息类,之后对这些类进行数据清洗,其中就包括了缺失值和、异常值的去除。之后便是将数据转移到构建的数据库或者数据仓库。数据转换是指将数据统一形式,使得相互兼容。

 

二、学习内容

1、先行代码:

  • 导入数据分析及可视化过程需要的库:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import datetime
import warnings
warnings.filterwarnings('ignore')
  • 引入外库:
data_train = pd.read_csv('train.csv')
"或者"
data_test_a = pd.read_csv('testA.csv')

注意:pandas读取数据时相对路径载入报错时,尝试使用os.getcwd()查看当前工作目录

2、数据预处理

  • 查看数据集的样本个数和原始特征维度
data_train.shape
"比如shape[0]就是读取矩阵第一维度的长度。"
data_test_a.shape
"直接用.shape可以快速读取矩阵的形状"
data_train.columns
".columns查看数据列名"
data_train.info()
"用以查看矩阵的全部信息"
data_train.describe()
"其意义在于观察这一系列数据的范围。大小、波动趋势等等,便于判断后续对数据采取哪类模型更合适"

  

  • ​​​​​​​查看缺失值 
print(f'There are {data_train.isnull().any().sum()} columns in train dataset with missing values.')
  • 具体的查看缺失特征及缺失率

"将nan可视化"
missing = data_train.isnull().sum()/len(data_train)
missing = missing[missing > 0]
missing.sort_values(inplace=True)
missing.plot.bar()
  • 查看特征的数值类型,对象类型

特征一般都是由类别型特征和数值型特征组成,而数值型特征又分为连续型和离散型。类别别型特征有时具有非数值关系,有时也具有数值关系。数值型特征本是可以直接入模的,但往往风控人员要对其做分箱,转化为WOE编码进而做标准评分卡等操作。从模型效果上来看,特征分箱主要是为了降低变量的复杂性,减少变量噪音对模型的影响,提高自变量和因变量的相关度。从而使模型更加稳定。

查看某一个数值型变量的分布,查看变量是否符合正态分布,如果不符合正太分布的变量可以log化后再观察下是否符合正态分布。如果想统一处理一批数据变标准化 必须把这些之前已经正态化的数据提出。正态化的原因:一些情况下正态非正态可以让模型更快的收敛,一些模型要求数据正态(eg. GMM、KNN),保证数据不要过偏态即可,过于偏态可能会影响模型预测结果。

3、变量分布可视化:

  • 单一变量分布可视化:
plt.figure(figsize=(8, 8))
sns.barplot(data_train["employmentLength"].value_counts(dropna=False)[:20],
            data_train["employmentLength"].value_counts(dropna=False).keys()[:20])
plt.show()
  • 时间格式数据处理及查看
"转化成时间格式  issueDateDT特征表示数据日期离数据集中日期最早的日期(2007-06-01)的天数"
data_train['issueDate'] = pd.to_datetime(data_train['issueDate'],format='%Y-%m-%d')
startdate = datetime.datetime.strptime('2007-06-01', '%Y-%m-%d')
data_train['issueDateDT'] = data_train['issueDate'].apply(lambda x: x-startdate).dt.days
"转化成时间格式"
data_test_a['issueDate'] = pd.to_datetime(data_train['issueDate'],format='%Y-%m-%d')
startdate = datetime.datetime.strptime('2007-06-01', '%Y-%m-%d')
data_test_a['issueDateDT'] = data_test_a['issueDate'].apply(lambda x: x-startdate).dt.days
plt.hist(data_train['issueDateDT'], label='train');
plt.hist(data_test_a['issueDateDT'], label='test');
plt.legend();
plt.title('Distribution of issueDateDT dates');
#train 和 test issueDateDT 
"日期有重叠 所以使用基于时间的分割进行验证是不明智的"

注意:

"透视图 索引可以有多个,“columns(列)”是可选的,聚合函数aggfunc最后是被应用到了变量“values”中你所列举的项目上。"
pivot = pd.pivot_table(data_train, index=['grade'], columns=['issueDateDT'], values=['loanAmnt'], aggfunc=np.sum)

4、生成数据报告

"用pandas_profiling生成数据报告"
import pandas_profilingpfr = pandas_profiling.ProfileReport(data_train)
pfr.to_file("./example.html")

 

三、学习问题与解答

Q1、数据挖掘的过程中一定要使用python吗?

A1:并不是一定的,Java、Matlab都具有高效的。但是网上大多数教程都与python绑定,原因是在科学计算功能和大量数据的处理上,Python语法更为简单,好上手,尽管Python效率相对要低很多,

Q2:上文只提到单一变量可视化,请问二维甚至多维变量应该如何可视化?

A1:传统的二元相关可视化技术主要使用散点图、回归图、图标图、树枝图标等,或者直接对多维进行拆分成多个一维,在同一个图内进行形状和颜色的改变,再统一重叠。具体用法还得根据需求进行改变。

四、学习思考与总结

事实上,本人是python小白,未曾接触python,在进行本次Task学习的时候,靠着以往的java语言进行慢慢摸索,这效率实在是太低了。于是我也开始了python的并行学习,希望能够跟上金融训练的task脚步,尽量充实自身能力,加油!

 


多变量数据可视化要怎么做? - 知乎 (zhihu.com)

一种多变量数据的可视化方法 - 一种多变量数据的可视化方法 (cqvip.com)

你可能感兴趣的:(数据挖掘,python)