欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 算ks值

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

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

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數(shù)組中提取正樣本和負樣本,并計算它們的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

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

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

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

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,說明正負樣本之間的區(qū)分度越高。