一文完全理解模型ks指标含义并画出ks曲线(包含代码和详细解释) |
您所在的位置:网站首页 › 模型ks值怎么计算 › 一文完全理解模型ks指标含义并画出ks曲线(包含代码和详细解释) |
KS(Kolmogorov-Smirnov)指标是一种常用于评估分类模型性能的指标,它可以帮助我们判断模型的区分能力。KS曲线是一种可视化KS指标的方法,通过绘制累积分布函数(CDF)曲线来展示模型在不同阈值下的表现。 KS指标的计算步骤如下: 1. 首先,根据模型预测的概率值将样本进行排序,从高到低排列。 2. 然后,计算累积好坏样本的比例,即累积分布函数(CDF)。 3. 接着,计算好坏样本的累积比例差值,即KS值,KS = |好样本累积比例 - 坏样本累积比例|。 KS曲线的绘制步骤如下: 1. 将样本按照模型预测的概率值从高到低排序。 2. 计算每个阈值下的好样本和坏样本的累积比例。 3. 绘制累积好样本比例曲线和累积坏样本比例曲线,并标注KS值。 下面是一个使用Python绘制KS曲线的示例代码: python import numpy as np import matplotlib.pyplot as plt # 模型预测的概率值 y_pred = np.array([0.2, 0.4, 0.6, 0.8, 0.3, 0.5, 0.7, 0.9]) # 样本的真实标签(0表示坏样本,1表示好样本) y_true = np.array([1, 0, 1, 0, 1, 0, 1, 0]) # 根据预测概率值对样本进行排序 sorted_indices = np.argsort(y_pred)[::-1] y_pred_sorted = y_pred[sorted_indices] y_true_sorted = y_true[sorted_indices] # 计算累积好样本比例和累积坏样本比例 cum_good = np.cumsum(y_true_sorted) cum_bad = np.cumsum(1 - y_true_sorted) # 计算KS值 ks = np.max(np.abs(cum_good - cum_bad)) # 绘制KS曲线 plt.plot(range(len(y_pred_sorted)), cum_good, label='Good') plt.plot(range(len(y_pred_sorted)), cum_bad, label='Bad') plt.xlabel('Threshold') plt.ylabel('Cumulative Proportion') plt.title('KS Curve (KS = {:.3f})'.format(ks)) plt.legend() plt.show()在上述示例中,我们假设模型预测的概率值为`[0.2, 0.4, 0.6, 0.8, 0.3, 0.5, 0.7, 0.9]`,样本的真实标签为`[1, 0, 1, 0, 1, 0, 1, 0]`。首先,我们根据预测概率值对样本进行排序,得到排序后的概率值和真实标签。然后,计算累积好样本比例和累积坏样本比例。最后,绘制累积好样本比例曲线和累积坏样本比例曲线,并计算KS值。 通过绘制KS曲线,我们可以直观地观察到模型在不同阈值下的好坏样本区分能力。KS值越大,表示模型的区分能力越强。例如,如果KS值为0.8,说明模型在某个阈值下,好样本的累积比例比坏样本的累积比例高出了0.8,这意味着模型能够较好地区分好坏样本。 需要注意的是,KS曲线的斜率越大,表示模型的区分能力越强。当KS曲线达到最大值时,对应的阈值就是最佳阈值,可以用于分类模型的预测。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |