网站首页 > 文章中心 > 其它

pythonwoe函数

作者:小编 更新时间:2023-08-26 11:04:59 浏览量:48人看过

银行数据仓库体系实践(18)--数据应用之信用风险建模

信用风险

pythonwoe函数-图1

(1)People:贷款人状况,包括历史还款表现、当前负债情况、资金饥渴度等;

贷后是指客户借款后银行持续跟进客户的信用情况,如果发现信用评分降低或者某些指标达到风险预警指标的阈值,说明风险升高,则会进行冻结额度甚至提前进行贷款收回.特别是对于逾期客户.

风险建模步骤

在进行信用评估时如何选择客户属性、如何确定评分或评级规则呢?这就需要进行风险建模,通过分析历史数据来确定哪些特征或指标对客户的违约相关性大,可以了解客户的还款能力以及还款意愿.并通过一定方法来建立评分和评级的规则.那风险建模主要分为以下步骤:

通过对变量的分割、分组和合并转换,分析每个变量对于结果的相关性,剔除掉预测能力较弱的变量,筛选出符合实际业务需求、具有较强预测能力的变量.检测变量预测能力的方法有:WOE(weight of Evidence) 、IV(informationvalue)等.

在信用风险建模中,目前评分卡建模还是主要的方式,除了申请评分(A卡(Application score card))还有B卡(Behavior score card)行为评分卡、C卡(Collection score card)催收评分卡.B卡主要进行客户贷后管理,如何进行风险预警,C卡进行催收管理,确定如何催收以及催收方式和时间点.信用风险模型中还有一个是反欺诈模型,它主要是识别假冒身份、虚假信息、批量薅羊毛等欺诈行为.随着机器学习和大数据的发展,其它的一些建模方式如决策树、深度神经网络也越来越多的应用到了风险建模中.

信用风险模型是数据仓库支持的重要数据应用之一,在风险建模分析阶段,数据仓库是建模样本数据以及衍生指标加工的主要提供者,业务人员一般在自助分析平台进行数据分析和建模,模型建立完成并部署后,会基于数据仓库数据进行模型效果的监控.在贷后管理中,风险集市也会进行贷后指标的加工.另外风险模型以及预警中会经常使用到外部数据,这部分数据也是通过数据仓库进行对接、加工和存储.

python最优分箱中woe计算(求大圣)

woe与iv (python)

IV 与 WOE:

IV表示一个变量的预测能力:

IV还可以用来挑选变量,IV就越大,它就越应该进入到入模变量列表中.

Psi

def calculate_psi(expected, actual, buckets=10): # test, base

def psi(expected_array, actual_array, buckets):

def scale_range(input, min, max):

input += -(np.min(input))

input /= np.max(input) / (max - min)

input += min

return input

#?按照概率值分10段

breakpoints = np.arange(0, buckets + 1) / (buckets) * 100

breakpoints = scale_range(breakpoints, np.min(expected_array), np.max(expected_array))

expected_percents = np.histogram(expected_array, breakpoints)[0] / len(expected_array)

# print(expected_percents)

actual_percents = np.histogram(actual_array, breakpoints)[0] / len(actual_array)

def sub_psi(test, base): # test,base

if base == 0:

base = 0.0001

if test == 0:

test = 0.0001

value = (test - base) * np.log(test / base)

return(value)

psi_value = np.sum(sub_psi(expected_percents[i], actual_percents[i]) for i in range(0, len(expected_percents)))

return(psi_value)

if len(expected.shape) == 1:

psi_values = np.empty(len(expected.shape))

else:

psi_values = np.empty(expected.shape[0])

for i in range(0, len(psi_values)):

if len(psi_values) == 1:

psi_values = psi(expected, actual, buckets)

psi_values[i] = psi(expected[:,i], actual[:,i], buckets)

return(psi_values)

python 对toad里面的toad.metrics.KS_bucket函数改写成自定义分段

toad函数里面有个 类似于woe 统计各段的好坏,好坏比, 累计好坏比,KS的一个数为

toad.metrics.KS_bucket

此函数中有两个参数,可以 是等频分,也可以 是等距分箱,但此分箱均是以分数的最大最小值 为基础划分的.

我想把整成0~1区间的,所以对原函数进行了修改.

python: split的用法,在后面的括号不同,输出的也不一样,大神能不能帮忙解释一下下面的例子.

split的第一个参数是分隔符.

如果省略第一个参数,默认把所有的空格、制表符、回车符当作分隔符,并过滤掉空串.这个也是你第一种写法的效果.

line.split('\t''\n')

'\t'和'\n'是两个字符串,会自动进行拼接,形成'\t\n'作为分隔符.而在你输入的字符串中,不包含这样的字串,所以就分割的结果就是原串.

split('\t')

以'\t'作为分隔符,分割的结果就是第三种写法.

split不支持同时使用多种字符做分隔符,如果想实现这样的效果,可以用re,例如:

a

'wowofbfwjowoefbwfoweojbwoefja'

import re

re.split('[ab]', a)

['wowof', 'fwjowoef', 'wfoweoj', 'woefj', '']

以上就是土嘎嘎小编为大家整理的pythonwoe函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章