データマイニングモデリング評価指標-KS指標のpythonコード実現の2つの方法
1453 ワード
KS指標であるmax(TPR-FPR).
方法1
第1の方法は長いが,具体的なシナリオは,二分類問題,正サンプルマーク1,負サンプルマーク0である.中にはpandasとnumpyライブラリがあり、import文は貼られません.コードは以下の通りです.
具体的なロジックは、この記事で紹介したKSの計算方法に基づいています.https://wenku.baidu.com/view/5f3e9c803c1ec5da51e2700e.html
方法2
この方法は比較的簡潔で,sklearnのmetricsの関数roc_を用いた.Curve()FPR,TPRを求めてmax(TPR-FPR)を直接計算するのは超便利かな~~~~
親測の2つの方法で計算した結果は同じです!
参照先:https://wenku.baidu.com/view/5f3e9c803c1ec5da51e2700e.html
方法1
第1の方法は長いが,具体的なシナリオは,二分類問題,正サンプルマーク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
方法2
この方法は比較的簡潔で,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))
親測の2つの方法で計算した結果は同じです!
参照先:https://wenku.baidu.com/view/5f3e9c803c1ec5da51e2700e.html