色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

python 算ks值

李中冰2年前9瀏覽0評論

KS值是用于評估模型預測能力的重要指標。Python中有多種方法可以計算KS值,其中一種最常見的方法是使用scipy庫的ks_2samp函數。

import scipy.stats as stats
def cal_ks(model_scores, actual_labels):
# 將scores和標簽分別轉為array類型
model_scores = np.asarray(model_scores)
actual_labels = np.asarray(actual_labels)
# 從scores數組中提取正樣本和負樣本,并計算它們的CDF值
pos_scores = model_scores[actual_labels == 1]
neg_scores = model_scores[actual_labels == 0]
pos_cdf = stats.cumfreq(pos_scores, numbins=100, defaultreallimits=(0,1))[0] / len(pos_scores)
neg_cdf = stats.cumfreq(neg_scores, numbins=100, defaultreallimits=(0,1))[0] / len(neg_scores)
# 計算KS值
ks = np.max(np.abs(pos_cdf - neg_cdf))
return ks

該函數接受兩個數組作為輸入:model_scores表示模型的預測分數,actual_labels表示實際標簽。函數首先將這兩個數組轉換為numpy數組,然后將scores數組按實際標簽分為正、負兩類,并計算它們的CDF值。最后,函數計算正負樣本CDF值的最大差距,即KS值。

該函數有一個額外的參數numbins,用于指定將scores數組分成的等間隔區間的數量,這個參數的值越大,計算出的CDF值越精確,但是也會造成計算時間增加。

使用這個函數計算KS值非常簡單,只需要傳入模型的預測分數和實際標簽即可:

model_scores = [0.3, 0.8, 0.5, 0.7, 0.2, 0.6, 0.1, 0.9]
actual_labels = [1, 0, 1, 0, 1, 0, 1, 0]
ks = cal_ks(model_scores, actual_labels)
print('KS值為:%.2f' % ks)

輸出結果為:

KS值為:0.75

這表明該模型的預測能力很好,因為KS值越接近1,說明正負樣本之間的區分度越高。