ks代码助解

本文详细介绍了ks代码的实现过程,通过实例解析代码逻辑,帮助读者理解ks算法的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码实现:

data_test_2 = {'gd':[1,1,1,1,1,1,0,0,0,0,0,0,0],'score':[1,2,0,2,2,7,4,5,4,0,4,18,np.nan]}
data_test_2 = pd.DataFrame(data_test_2)

def ks_calc_cross(data,var_col,y_col):
    '''
    功能: 计算KS值,输出对应分割点和累计分布
    输入值:-
    输出值:
    'ks': KS值,'crossdens': 好坏人累积概率分布以及其差值gap
    '''
    ks_df1 = pd.crosstab(data[var_col],data[y_col])
    print(ks_df1)
    print(ks_df1.cumsum(axis=0))
    print(ks_df1.sum())
    ks_df2 = ks_df1.cumsum(axis=0) / ks_df1.sum()
    print(ks_df2)
    ks_df2['gap'] = abs(ks_df2[0] - ks_df2[1])
    ks = ks_df2['gap'].max()
    return ks

ks_value = ks_calc_cross(data_test_2, 'score', 'gd')
print(ks_value)
gd     0  1
score      
0.0    1  1
1.0    0  1
2.0    0  3
4.0    3  0
5.0    1  0
7.0    0  1
18.0   1  0
gd     0  1
score      
0.0    1  1
1.0    1  2
2.0    1  5
4.0    4  5
5.0    5  5
7.0    5  6
18.0   6  6
gd
0    6
1    6
dtype: int64
gd            0         1
score                    
0.0    0.166667  0.166667
1.0    0.166667  0.333333
2.0    0.166667  0.833333
4.0    0.666667  0.833333
5.0    0.833333  0.833333
7.0    0.833333  1.000000
18.0   1.000000  1.000000
0.666666666667

庖丁解牛:
import pandas as pd
import numpy as np

data_test_2 = {'gd':[1,1,1,1,1,1,0,0,0,0,0,0,0],'score':[1,2,0,2,2,7,4,5,4,0,4,18,np.nan]}
data_test_2 = pd.DataFrame(data_test_2)
data_test_2

ks_df1 = pd.crosstab(data_test_2['score'],data_test_2['gd'])
ks_df1

ks_df1.cumsum(axis=0)

ks_df1.sum()

ks_df2 = ks_df1.cumsum(axis=0) / ks_df1.sum()
ks_df2

ks_df2['gap'] = abs(ks_df2[0] - ks_df2[1])
ks_df2

ks_df2['gap'].max()

 

 

转载于:https://www.cnblogs.com/wqbin/p/11146836.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值