【数据处理】python数据评估常用指标:ks、fpr、tpr
生活随笔
收集整理的這篇文章主要介紹了
【数据处理】python数据评估常用指标:ks、fpr、tpr
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
def cal_ks(df, col, target):"""df:數據集col:輸入的特征target:好壞標記的字段名return:ks: KS值precision:準確率tpr:召回率fpr:打擾率"""bad = df[target].sum()good = df[target].count() - badvalue_list = list(df[col])label_list = list(df[target])value_count = df[col].nunique()items = sorted(zip(value_list, label_list), key=lambda x: x[0])value_bin = []ks_list = []if value_count <= 200:for i in sorted(set(value_list)):value_bin.append(i)label_bin = [x[1] for x in items if x[0] < i]badrate = sum(label_bin) / badgoodrate = (len(label_bin) - sum(label_bin)) / goodks = abs(goodrate - badrate)ks_list.append(ks)else:for i in range(1, 201):step = (max(value_list) - min(value_list)) / 200idx = min(value_list) + i * stepvalue_bin.append(idx)label_bin = [x[1] for x in items if x[0] < idx]badrate = sum(label_bin) / badgoodrate = (len(label_bin) - sum(label_bin)) / goodks = abs(goodrate - badrate)ks_list.append(ks)ks = round(max(ks_list), 3)ks_value = [value_bin[i] for i, j in enumerate(ks_list) if j == max(ks_list)][0]precision = df[(df[col] <= ks_value) & (df[target] == 1)].shape[0] / df[df[col] <= ks_value].shape[0]tpr = df[(df[col] <= ks_value) & (df[target] == 1)].shape[0] / badfpr = df[(df[col] <= ks_value) & (df[target] == 0)].shape[0] / goodreturn ks, precision, tpr, fpr
??對數據分析、機器學習、數據科學、金融風控等感興趣的小伙伴,需要數據集、代碼、行業報告等各類學習資料,可添加微信:wu805686220(記得要備注喔!),也可關注微信公眾號:風控圏子(別打錯字,是圏子,不是圈子,算了直接復制吧!)
關注公眾號后,可聯系圈子助手加入如下社群:
- 機器學習風控討論群(微信群)
- 反欺詐討論群(微信群)
- python學習交流群(微信群)
- 研習社資料(qq群:102755159)(干貨、資料、項目、代碼、報告、課件)
相互學習,共同成長。
總結
以上是生活随笔為你收集整理的【数据处理】python数据评估常用指标:ks、fpr、tpr的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据处理】python变量分箱常见手法
- 下一篇: 【数据库】SQL极速入门(多种方式查询用