信用评分系统运行原理上篇(2)

简介: 信用评分系统运行原理上篇(2)
  • 使用2来代替大于2的值


revNew = []
for val in df.RevolvingUtilizationOfUnsecuredLines:
    if val <= 2:
        revNew.append(val)
    else:
        revNew.append(2.)


再次分箱


image.png


对age分箱


df.age.plot.box(grid=True)


image.png


发现 age 属性中存在0值情况,而这些数据明显是异常值,因此对其进行处理
df = df[df["age"] > 0]


对三个属性进行分箱


df.boxplot(column=["NumberOfTime30-59DaysPastDueNotWorse", "NumberOfTime60-89DaysPastDueNotWorse", "NumberOfTimes90DaysLate"],rot=30)
rot:int或float,默认为0 标签的旋转角度(以度为单位)相对于屏幕坐标


image.png


上面的箱线图可以看出 NumberOfTime30-59DaysPastDueNotWorse,NumberOfTime60-89DaysPastDueNotWorse,NumberOfTimes90DaysLate三个特征都存在两个异常值


查看具体的异常值


df["NumberOfTime30-59DaysPastDueNotWorse"].unique()
df["NumberOfTime60-89DaysPastDueNotWorse"].unique()
df["NumberOfTimes90DaysLate"].unique()


image.png


可以看出96和98是异常值数据


  • 用指定列数据的中位数来替换异常值


def replaceOutlier(data):
    New = []
    med = data.median()
    for val in data:
        if ((val == 98) | (val == 96)):
            New.append(med)
        else:
            New.append(val)
    return New


删除了异常值之后 再看这3个列的箱线图


image.png


查看DebtRatio的箱线图


image.png


image.png


第一个参数是 指定列数据
第二个参数是 阈值
如果列数据是数组 则转换成array
shape返回是数据表的矩阵行列数
对于矩阵的行数 也可以使len(x)函数输出的矩阵长度 也就是所谓的行数
对数列中的每一行取中位数
再用每一行中的每一个数据减去中位数 
再对差值取中位数
再用一个公式 norm.ppf(0.75) * (每个数据和中位数差距) / 每个中位数的中位数 得到一个异常值分值 
分值大于阈值的话 返回true
分值小于阈值返回false
相关文章
|
JavaScript 前端开发
技术汇总:第七章:三种验证方式
技术汇总:第七章:三种验证方式
110 0
技术汇总:第七章:三种验证方式
信用评分系统运行原理上篇(3)
信用评分系统运行原理上篇(3)
145 0
信用评分系统运行原理上篇(3)
|
机器学习/深度学习
信用评分系统运行原理上篇(1)
信用评分系统运行原理上篇(1)
142 0
信用评分系统运行原理上篇(1)
|
机器学习/深度学习 Python
信用评分系统运行原理下篇(3)
信用评分系统运行原理下篇(3)
信用评分系统运行原理下篇(3)
|
算法
信用评分系统运行原理下篇(2)
信用评分系统运行原理下篇(2)
134 0
|
算法
信用评分系统运行原理下篇(1)
信用评分系统运行原理下篇(1)
144 0
信用评分系统运行原理下篇(1)
信用评分系统运行原理中篇-分箱逻辑(3)
信用评分系统运行原理中篇-分箱逻辑(3)
180 0
信用评分系统运行原理中篇-分箱逻辑(3)
信用评分系统运行原理中篇-分箱逻辑(4)
信用评分系统运行原理中篇-分箱逻辑(4)
102 0
信用评分系统运行原理中篇-分箱逻辑(4)
|
算法 编译器 Python
信用评分系统运行原理中篇-分箱逻辑(1)
信用评分系统运行原理中篇-分箱逻辑(1)
134 0
信用评分系统运行原理中篇-分箱逻辑(1)
|
前端开发 数据安全/隐私保护 开发者
设计手机直播源码后台系统,不容忽视的四个要点
设计手机直播源码后台系统,不容忽视的四个要点