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代码)的更多相关文章

  1. outlier异常值检验算法之_箱型图(附python代码)

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  2. day02编程语言,Python语言介绍,Python解释器安装,环境变量,Python代码执行,pip,应用程序使用文件的三步骤,变量,变量的三大组成,比较,pycharm

    复习 重点: 1.进制转换:二进制 与十六进制 2.内存分布:栈区 与堆区 # 二进制1111转换十六进制 => 8 4 2 1 => f 10101100111011 => 2a7 ...

  3. python异常值检验实战2_医美手术价格

    python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...

  4. 异常值检验实战3_NBA球员表现稳定性分析

     机器学习_深度学习_入门经典(博主永久免费教学视频系列) https://study.163.com/course/courseMain.htm?courseId=1006390023&sh ...

  5. R语言︱异常值检验、离群点分析、异常值处理

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:异常值处理一般分为以下几个步骤:异常 ...

  6. R语言︱处理缺失数据&&异常值检验、离群点分析、异常值处理

    在数据挖掘的过程中,数据预处理占到了整个过程的60% 脏数据:指一般不符合要求,以及不能直接进行相应分析的数据 脏数据包括:缺失值.异常值.不一致的值.重复数据及含有特殊符号(如#.¥.*)的数据 数 ...

  7. 科学经得起实践检验-python3.6通过决策树实战精准准确预测今日大盘走势(含代码)

    科学经得起实践检验-python3.6通过决策树实战精准准确预测今日大盘走势(含代码) 春有百花秋有月,夏有凉风冬有雪: 若无闲事挂心头,便是人间好时节. --宋.无门慧开 不废话了,以下训练模型数据 ...

  8. Java代码执行顺序(静态变量,非静态变量,静态代码块,代码块,构造函数)加载顺序

    //据说这是一道阿里巴巴面试题,先以这道题为例分析下 public class Text { public static int k = 0; public static Text t1 = new ...

  9. @有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不

    @有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中 2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不加@那么需要用一些转义符\来显示一些特 ...

随机推荐

  1. Spring Data JPA引入和介绍

    第1章  1.ORM概述[了解] ORM(Object-Relational Mapping) 表示对象关系映射.在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中.只要有一套程序能 ...

  2. functools.lru_cache装饰器

    functools.lru_cache装饰器 functools.lru_cache是非常实用的装饰器,他实现了备忘功能它把耗时的函数的结果保存起来,避免传入相同的参数时重复计算.LRU是Least ...

  3. java lambda 所有列求和

    今天做东西的时候遇到一个需求,求list集合所有列的求和.折腾半天也没有搞出来,网上大部分都是单列求和就像下面这样的,其他都差多,什么 min,max avg count 只得到了number这个属性 ...

  4. 三:MVC之Lambda表达式

    Lambda表达式 Lambda表达式是一个匿名方法,即没有方法名的方法. C#中的Lambda表达式使用Lambda运算符“=>”,该运算符读为“goes to”. 语法: 形参列表=> ...

  5. Python Flask学习笔记(1)

    1.搭建虚拟环境 a. 安装 virtualenv : pip3 install virtualenv b. 建立虚拟环境 : 任意目录下建立一个空文件(我的是 Py_WorkSpace) ,在该文件 ...

  6. 一图一知-NPM&YARN常用命令

  7. 【2-sat】8.14B. 黑心老板

    2-sat 只写过板子 题目大意 有一个长度为$k$取值只有01的序列,现在$n$个人每人下注三个位置,请构造一个序列使每个人最多猜对一个位置 $k\le 5000,n \le 10000$ 题目分析 ...

  8. memory management Vulkan

    https://www.youtube.com/watch?v=rXSdDE7NWmA vulkan 1. DEVICE_LOCAL_BIT | HOST_VISIBLE_BIT | HOST_COH ...

  9. Java实现一行一行读取文件内容(进行编码处理)

    // 读取文件内容public String readFile(){ String path = ""; File file = new File(path); StringBui ...

  10. 关于dll注入

    例如:     有一个游戏修改器:其中有一个按钮“自动打怪”:点击时游戏会实现相应的功能:     对于游戏程序来说,自动打怪操作本质上就是call调用一个函数:     但是修改器和游戏是两个独立的 ...