阿里云天池龙珠计划金融风控训练营-Task2学习笔记

金融风控数据挖掘-Task2学习笔记

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

一、学习知识点概要

1、读取文件

  • TSV与CSV的区别
  • nrow参数、分块读取

2、总体了解数据集

  • 样本个数和原始特征维度
  • 特征含义

3、缺失值、唯一值

  • print(f)、format()、isnull()
  • nan可视化
  • 数值类型
  • WOE编码、IV
  • 正态化

4、变量分布可视化

  • 单一变量分布可视化
  • 根据y值不同可视化x某个特征的分布

5、时间格式数据处理及查看

6、透视图

二、学习内容

1、读取文件

  • TSV和CSV的区别
    TSV(Tab-separated values) 存储表格数据的简单文本格式,是用制表符(Tab,’\t’)作为字段值的分隔符;
    CSV是用半角逗号(’,’)作为字段值的分隔符

  • nrow参数
    通过nrows参数,来设置读取文件的前多少行,nrows是一个大于等于0的整数。`

data_train_sample = pd.read_csv("train.csv",nrows=5)
  • 范式
    符合某一级别的关系模式的集合,构造数据库必须遵循一定的规则.在关系数据库中,这种规则就是范式.关系数据库必须满足一定的要求,即满足不同的范式.
  • 分块读取
#设置chunksize参数,来控制每次迭代数据的大小
i = 0  # 控制输出
chunker = pd.read_csv("train.csv",chunksize=5)
for item in chunker:
    print(type(item))
    #
    print(len(item))
    i+=1
    if i >= 4:   # 由于数据量过大,限制输出4条就跳出循环
        break
    #5

2、总体了解数据集

  • 样本个数和原始特征维度
    包括数据集的大小、column(用来标识实体类中属性与数据表中字段的对应关系)

  • 特征含义
    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,为一些贷款人行为计数特征的处理

  • info()函数可以观察数据的具体情况

3、缺失值、唯一值

  • print(f’)函数
a=1
b=2
S=a+b
P=a*b
print(f"Sum of a and b is {S}, and product is {P}")

  • isnull()函数
    使用指定的替换值替换返回值为NULL

  • format()函数
    主要用于对字符串进行格式化,有如下基本特征:
    通过 {} 和:代替以前的 %
    可以接受不限个参数
    参数位置可以不按顺序

  • #np.array.any()是或操作,任意一个元素为True,输出为True。
    #np.array.all()是与操作,所有元素为True,输出为True。

  • nan可视化(即缺失值可视化)

missing = data_train.isnull().sum()/len(data_train)
missing = missing[missing > 0]
missing.sort_values(inplace=True)
missing.plot.bar()

nan是Not a Number的缩写

1.数据处理时,在实际工程中经常数据的缺失或者不完整,此时我们可以将那些缺失设置为nan

2.绘图的时候,如果我们想挖掉一部分,那么nan就起作用了

  • 纵向了解哪些列存在 “nan”, 并可以把nan的个数打印,主要的目的在于查看某一列nan存在的个数是否真的很大,如果nan存在的过多,说明这一列对label的影响几乎不起作用了,可以考虑删掉。如果缺失值很小一般可以选择填充。

  • 另外可以横向比较,如果在数据集中,某些样本数据的大部分列都是缺失的且样本足够的情况下可以考虑删除。

  • lgb、xgb、树模型与神经网络都可以自动处理缺失值

- 数值类型
类别型特征和数值型特征,而数值型特征又分为连续型和离散型

  • 类别型特征有时具有非数值关系,有时也具有数值关系。比如‘grade’中的等级A,B,C等,是否只是单纯的分类,还是A优于其他要结合业务判断。

  • 数值型特征本是可以直接入模的,但往往风控人员要对其做分箱,转化为WOE编码进而做标准评分卡等操作。从模型效果上来看,特征分箱主要是为了降低变量的复杂性,减少变量噪音对模型的影响,提高自变量和因变量的相关度。从而使模型更加稳定

  • IV和WOV
    二者都是评分卡模型里的参数,在Task1中也有介绍
    在CSDN中找到了相关的详解,可以很好地解释
    评分卡模型中的IV和WOE详解

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

4、变量分布可视化

  • 单一变量可视化
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()
  • 根据y值不同可视化x某个特征的分布
    分别查看类别型变量和连续型变量在不同y值上的分布

5、时间格式数据处理及查看

  • 由字符串格式转化为日期格式的函数为: datetime.datetime.strptime()。我们输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:

6、透视图

pivot = pd.pivot_table(data_train, index=['grade'], columns=['issueDateDT'], values=['loanAmnt'], aggfunc=np.sum)

Pandas透视表(pivot_table)详解

三、学习问题与解答

学习问题在于之前基本等于没有基础啊,现在看着这些代码感觉跟看天书一样,但是报名了活动硬着头皮也要坚持到底,至少能够多了解一些机器学习的知识。在活动结束之后再恶补一下python的基础知识吧。

四、学习思考与总结

这几天的Task2的学习真的让我头都大了,没有基础完全跟不上,我只能通过不断查找python的一些基础知识试图理解EDA到底有什么作用,加油吧,希望能尽量坚持下去。

你可能感兴趣的:(阿里云天池龙珠计划金融风控训练营-Task2学习笔记)