异常值检验实战1--风控贷款年龄变量(附python代码)
python风控评分卡建模和风控常识(博客主亲自录制视频教程)
结论只属于教学数据,每个场景不一样,结论不一样,仅供参考
年龄45岁以上属于离群值,有欺诈嫌疑,建议不考虑放贷,可根据其他情况综合判定
1538/28720=0.535
年龄59岁以上属于极端离群值,非常可能是欺诈,不应该考虑放贷
50/28720=0.0017409470752089136
好坏客户比例无法区分:
年龄45岁以上好客户概率
772/1538=0.5019505851755527
年龄45岁以上坏客户概率
766/1538=0.4980494148244473

excel数据



正太分布_箱形图_脱群值挖掘.py
# -*- coding: utf-8 -*-
"""
正太分布_箱形图_脱群值挖掘.py
Created on Fri Mar 9 10:18:04 2018
@author: Toby QQ:231469242
Python视频集合
https://pythoner.taobao.com/ """
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import os
import normality_check
from scipy.stats import mode
#读取文件
FileName="年龄.xlsx"
#读取excel
df=pd.read_excel(FileName)
年龄=df['年龄'] 描述性统计=年龄.describe()
样本量=描述性统计[0]
最小值=年龄.min()
最大值=年龄.max()
平均数=年龄.mean()
中位数=年龄.median()
众数=mode(年龄).mode[0]
四分之一位数=描述性统计[4]
四分之三位数=描述性统计[6]
标准差=描述性统计[2]
IQR=四分之三位数-四分之一位数
异常值上线=四分之三位数+1.5*IQR
异常值下线=四分之一位数-1.5*IQR
upper_outer_fence=四分之三位数+3*IQR
lower_outer_fence=四分之一位数-3*IQR
if lower_outer_fence<0:
lower_outer_fence=0
#避免两端极值和商户活动降价影响
参考区间=(四分之一位数,四分之三位数)
if 样本量>3:
正态性=normality_check.check_normality(年龄)
else:
正态性=False
参考价格=中位数
market_price_range=(异常值下线,异常值上线) #绘制正太分布图
年龄.hist()
df1=pd.DataFrame(年龄)
fig,ax=plt.subplots()
a=df1.boxplot(ax=ax)
plt.savefig('pig.png') def 异常值判断(数字):
if 数字>异常值上线 or 数字<异常值下线:
print("%f 是异常值"%数字)
return True
else:
print("%f 不是异常值"%数字)
return False #箱型图市场价格取值范围
def Boxer_Market_price_range(异常值下线,异常值上线):
if 异常值下线<最小值:
异常值下线=最小值
return (异常值下线,异常值上线) #正态分布市场价格取值范围
market_price_range=Boxer_Market_price_range(异常值下线,异常值上线)
extreme_outlier=(lower_outer_fence,upper_outer_fence) print("参考值:",参考价格)
print("参考区间:",参考区间)
print("正常区间:",market_price_range)
print("超出此范围的是极端异常值区间:",extreme_outlier)
print("描述性统计:",描述性统计)
#测试1.5万是否属于正常市场价格
#异常值判断(15000) #名称列表
list_名称=["样本量","最小值","最大值","平均数","中位数","众数","四分之一位数","四分之三位数","IQR","异常值上线","异常值下线","标准差","正态性","参考价格","参考区间","市场价格正常区间","(区间外)极端异常值"]
list_value=[样本量,最小值,最大值,平均数,中位数,众数,四分之一位数,四分之三位数,IQR,异常值上线,异常值下线,标准差,正态性,参考价格,参考区间,market_price_range,extreme_outlier]
df_save=pd.DataFrame(data=[list_value],index=[0],columns=list_名称)
df_save.to_excel("统计结果.xlsx")
normality_check.py
# -*- coding: utf-8 -*-
'''
normality_check.py
@author: Toby QQ:231469242
Python视频集合
https://pythoner.taobao.com/
all right reversed,no commercial use
正态性检验脚本 ''' import scipy
from scipy.stats import f
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats
# additional packages
from statsmodels.stats.diagnostic import lillifors #对一列数据进行正态分布测试
def check_normality(testData):
print("one group normality check begin:")
#20<样本数<50用normal test算法检验正态分布性
if 20<len(testData) <50:
p_value= stats.normaltest(testData)[1]
if p_value<0.05:
print("use normaltest")
print("p value:",p_value)
print ("data are not normal distributed")
return False
else:
print("use normaltest")
print("p value:",p_value)
print ("data are normal distributed")
return True #样本数小于50用Shapiro-Wilk算法检验正态分布性
if len(testData) <50:
p_value= stats.shapiro(testData)[1]
if p_value<0.05:
print ("use shapiro:")
print("p value:",p_value)
print ("data are not normal distributed")
return False
else:
print ("use shapiro:")
print("p value:",p_value)
print ("data are normal distributed")
return True if 300>=len(testData) >=50:
p_value= lillifors(testData)[1] if p_value<0.05:
print ("use lillifors:")
print("p value:",p_value)
print ("data are not normal distributed")
return False
else:
print ("use lillifors:")
print("p value:",p_value)
print ("data are normal distributed")
return True if len(testData) >300:
p_value= stats.kstest(testData,'norm')[1]
if p_value<0.05:
print ("use kstest:")
print("p value:",p_value)
print ("data are not normal distributed")
return False
else:
print ("use kstest:")
print("p value:",p_value)
print ("data are normal distributed")
return True
#测试结束
print("-"*100) #对所有样本组进行正态性检验
def NormalTest(list_groups):
for group in list_groups:
#正态性检验
status=check_normality(group)
if status==False :
return False '''
group1=[5,2,4,2.5,3,3.5,2.5,3]
group2=[1.5,2,1.5,2.5,3.3,2.3,4.2,2.5]
group3=[96,90,95,92,95,94,94,94]
list_groups=[group1,group2,group3]
list_total=group1+group2+group3
#对所有样本组进行正态性检验
NormalTest(list_groups)
'''
python风控建模实战lendingClub(博主录制,catboost,lightgbm建模,2K超清分辨率)
https://study.163.com/course/courseMain.htm?courseId=1005988013&share=2&shareId=400000000398149

微信扫二维码,免费学习更多python资源

异常值检验实战1--风控贷款年龄变量(附python代码)的更多相关文章
- outlier异常值检验算法之_箱型图(附python代码)
python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...
- day02编程语言,Python语言介绍,Python解释器安装,环境变量,Python代码执行,pip,应用程序使用文件的三步骤,变量,变量的三大组成,比较,pycharm
复习 重点: 1.进制转换:二进制 与十六进制 2.内存分布:栈区 与堆区 # 二进制1111转换十六进制 => 8 4 2 1 => f 10101100111011 => 2a7 ...
- python异常值检验实战2_医美手术价格
python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...
- 异常值检验实战3_NBA球员表现稳定性分析
机器学习_深度学习_入门经典(博主永久免费教学视频系列) https://study.163.com/course/courseMain.htm?courseId=1006390023&sh ...
- R语言︱异常值检验、离群点分析、异常值处理
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:异常值处理一般分为以下几个步骤:异常 ...
- R语言︱处理缺失数据&&异常值检验、离群点分析、异常值处理
在数据挖掘的过程中,数据预处理占到了整个过程的60% 脏数据:指一般不符合要求,以及不能直接进行相应分析的数据 脏数据包括:缺失值.异常值.不一致的值.重复数据及含有特殊符号(如#.¥.*)的数据 数 ...
- 科学经得起实践检验-python3.6通过决策树实战精准准确预测今日大盘走势(含代码)
科学经得起实践检验-python3.6通过决策树实战精准准确预测今日大盘走势(含代码) 春有百花秋有月,夏有凉风冬有雪: 若无闲事挂心头,便是人间好时节. --宋.无门慧开 不废话了,以下训练模型数据 ...
- Java代码执行顺序(静态变量,非静态变量,静态代码块,代码块,构造函数)加载顺序
//据说这是一道阿里巴巴面试题,先以这道题为例分析下 public class Text { public static int k = 0; public static Text t1 = new ...
- @有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不
@有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中 2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不加@那么需要用一些转义符\来显示一些特 ...
随机推荐
- python之atexit模块的使用
python atexit 模块定义了一个 register 函数,用于在 python 解释器中注册一个退出函数,这个函数在解释器正常终止时自动执行,一般用来做一些资源清理的操作. atexit 按 ...
- 【loj#2524】【bzoj5303】 [Haoi2018]反色游戏(圆方树)
题目传送门:loj bzoj 题意中的游戏方案可以转化为一个异或方程组的解,将边作为变量,点作为方程,因此若方程有解,方程的解的方案数就是2的自由元个数次方.我们观察一下方程,就可以发现自由元数量=边 ...
- 手写走通HTTP server 第二版本
HTTP server 2.0 1 接收客户请求 2 解析客户端请求 3 组合数据,形成HTTP response 4 将数据发送给客户端 升级 : 1 多线程接收客户端请求 2 基本的请求解析,根据 ...
- 命令行工具--LLDP
目录 命令行工具--LLDP 一.场景引入 二.什么是LLDP? 三.在CentOS上安装LLDP 四.命令详解 五.脚本 命令行工具--LLDP 一.场景引入 有的时候,我们需要知道服务器上联交换机 ...
- 微信小程序html(wxml)传参
欢迎加入前端交流群交流知识:749539640 习惯了vue.angular用微信小程序有时候真感觉非人类..需要用data-xxx 先说下我们在vue.angular里事件传参 //html < ...
- linux安装vsftpd后无法登陆
安装完成后在主机上登陆时,不管是输入用户,还是匿名都无法登陆 经过检查,发现是因为/etc/hosts.deny禁止了所有ip访问 将hosts.deny中的all:all删除,或者在/etc/hos ...
- IDEA 运行报错:WARN: Establishing SSL connection
使用JDBC连接数据库时出现报错, 报错内容:Wed Sep 26 14:30:31 CST 2018 WARN: Establishing SSL connection without server ...
- ProjectEuler237 Tours on a 4 x n playing board
思路是这样的 插头dp-->打表-->OEIS查表-->通项公式-->矩阵快速幂优化线性递推 OEIS竟然有这个东西的生成函数啊 答案为15836928 这是最终代码 #inc ...
- pandas中DataFrame和Series的数据去重
在SQL语言中去重是一件相当简单的事情,面对一个表(也可以称之为DataFrame)我们对数据进行去重只需要GROUP BY 就好. select custId,applyNo from tmp.on ...
- mongodb命令---花样查询语句
闲言少叙 查出价格低于200的商品信息----包含商品名称,货物编号,价格,添加信息等 db.goods.find( {}}, {,,,} ) 商品分类不为3的商品 db.goods.find( {} ...
