美文网首页LYQ_ML
数据挖掘建模评价指标-KS指标的python代码实现的两种方法

数据挖掘建模评价指标-KS指标的python代码实现的两种方法

作者: Nice_mood | 来源:发表于2017-08-09 21:02 被阅读0次

    KS指标即max(TPR-FPR)。

    方法一

    第一种方法很长,具体情境是:二分类问题,正样本标记为1,负样本标记为0。里面有用到pandas和numpy库,import语句就不贴了,代码如下:

    def compute_ks(data):
        sorted_list = data.sort_values(['predict_proba'], ascending=[True])#按照样本为正样本的概率值升序排序 ,也即坏样本的概率从高到低排序
        total_good=sorted_list['label'].sum()
        total_bad = sorted_list.shape[0] - total_good  
        max_ks = 0.0
        good_count = 0.0
        bad_count = 0.0
        for index, row in sorted_list.iterrows(): #按照标签和每行拆开
            if row['label'] == 0:
                bad_count +=1
            else:
                good_count +=1
            val = abs(bad_count/total_bad - good_count/total_good)
            max_ks = max(max_ks, val)
        return max_ks 
    test_pd=pd.DataFrame()
    y_predict_proba=est.predict_proba(X_test)[:,1]#取被分为正样本的概率那一列
    Y_test_1=np.array(Y_test)
    test_pd['label']=Y_test_1
    test_pd['predict_proba']=y_predict_proba
    print ("测试集 KS:",compute_ks(test_pd))
    

    具体的逻辑是根据这篇文章中介绍的KS的计算方法:
    https://wenku.baidu.com/view/5f3e9c803c1ec5da51e2700e.html

    方法二

    这个方法比较简洁,使用了sklearn的metrics里的函数roc_curve()求出FPR,TPR,然后直接计算max(TPR-FPR),是不是超方便哒~~~~

    y_predict_proba = est.predict_proba(X_test)[:,1]
    fpr,tpr,thresholds= sklearn.metrics.roc_curve(np.array(Y_test),y_predict_proba)
    print ('KS:',max(tpr-fpr))
    

    亲测这两种方法计算出的结果是一样的!

    参考:https://wenku.baidu.com/view/5f3e9c803c1ec5da51e2700e.html

    相关文章

      网友评论

        本文标题:数据挖掘建模评价指标-KS指标的python代码实现的两种方法

        本文链接:https://www.haomeiwen.com/subject/npnqrxtx.html