习近平 def pvaluecutoff(truelabel, testsubpreds, step=10 ,minstep=0, maxstep = 100): reslist = [] l = len(truelabel) for p in range(minstep, maxstep, step): prelabel = (testsubpreds > p / 100) * 1 passnum = np.sum(testsubpreds <= p / 100) wrongpass = truelabel[testsubpreds <= p / 100].sum() # 通过 passrate = passnum / l defaultrate = wrongpass / len(truelabel[testsubpreds <= p / 100]) # 误拒 rejectnum = np.sum(testsubpreds > p / 100) wrongreject = np.sum(truelabel[testsubpreds > p / 100] == 0)
precise = np.sum((true_label == 1) * (pre_label == 1)) / np.sum(pre_label)
recall = np.sum((true_label == 1) * (pre_label == 1)) / np.sum(true_label)
turb = np.sum((true_label == 0) * (pre_label == 1)) / np.sum(true_label == 0)
ks = recall - turb
res_list.append({'p': p / 100, 'pass_num': pass_num, 'wrong_pass': wrong_pass, 'passrate': passrate,
'default_rate': default_rate, 'reject_num': reject_num, 'wrong_reject': wrong_reject,
'precise': precise, 'recall': recall, 'turb': turb, 'ks': ks})
res_all = pd.DataFrame(res_list, index=range(len(res_list)))
res_all = res_all[['p', 'pass_num', 'wrong_pass', 'passrate', 'default_rate', 'reject_num', 'wrong_reject',
'precise', 'recall', 'turb', 'ks']]
res_all.columns = ['p', '通过', '误放', '通过率', '逾期率', '拒绝', '误拒', '准确率', '召回率', '打扰率', 'ks']
return res_all
def pvaluecutoff(truelabel, testsubpreds, amt, inloanamt, step=10 ,minstep=0, maxstep = 100): reslist = [] l = len(truelabel) for p in range(minstep, maxstep, step): prelabel = (testsubpreds > p / 100) * 1 passnum = np.sum(testsubpreds <= p / 100) passamt=np.sum(amt[testsubpreds<=p / 100])#所有通过人的借款总额 wrongpass = truelabel[testsubpreds <= p / 100].sum() predefaultamt=np.sum(inloanamt[(testsubpreds<=p / 100)&(truelabel==1)]) # 通过 passrate = passnum / l defaultrate = wrongpass / len(truelabel[testsubpreds <= p / 100]) # 误拒 rejectnum = np.sum(testsubpreds > p / 100) wrongreject = np.sum(truelabel[testsubpreds > p / 100] == 0)
precise = np.sum((true_label == 1) * (pre_label == 1)) / np.sum(pre_label)
recall = np.sum((true_label == 1) * (pre_label == 1)) / np.sum(true_label)
turb = np.sum((true_label == 0) * (pre_label == 1)) / np.sum(true_label == 0)
ks = recall - turb
res_list.append({'p': p / 100, 'pass_num': pass_num, 'wrong_pass': wrong_pass, 'passrate': passrate,
'default_rate': default_rate, 'default_amt_rate': pre_default_amt/pass_amt,'reject_num': reject_num, 'wrong_reject': wrong_reject,
'precise': precise, 'recall': recall, 'turb': turb, 'ks': ks})
res_all = pd.DataFrame(res_list, index=range(len(res_list)))
res_all = res_all[['p', 'pass_num', 'wrong_pass', 'passrate', 'default_rate', 'default_amt_rate','reject_num', 'wrong_reject',
'precise', 'recall', 'turb', 'ks']]
res_all.columns = ['p', '通过', '误放', '通过率', '逾期率(订单数口径)','敞口率','拒绝', '误拒', '准确率', '召回率', '打扰率', 'ks']
return res_all
评论