Python绘制KS曲线的实现方法

来源:中文源码网    浏览: 次    日期:2018年9月2日

【下载文档:  Python绘制KS曲线的实现方法.txt 】

(友情提示:右键点上行txt文档名->目标另存为)

Python绘制KS曲线的实现方法 python实现KS曲线,相关使用方法请参考上篇博客-R语言实现KS曲线

代码如下:

####################### PlotKS ##########################

def PlotKS(preds, labels, n, asc):

# preds is score: asc=1

# preds is prob: asc=0

pred = preds # 预测值

bad = labels # 取1为bad, 0为good

ksds = DataFrame({'bad': bad, 'pred': pred})

ksds['good'] = 1 - ksds.bad

if asc == 1:

ksds1 = ksds.sort_values(by=['pred', 'bad'], ascending=[True, True])

elif asc == 0:

ksds1 = ksds.sort_values(by=['pred', 'bad'], ascending=[False, True])

ksds1.index = range(len(ksds1.pred))

ksds1['cumsum_good1'] = 1.0*ksds1.good.cumsum()/sum(ksds1.good)

ksds1['cumsum_bad1'] = 1.0*ksds1.bad.cumsum()/sum(ksds1.bad)

if asc == 1:

ksds2 = ksds.sort_values(by=['pred', 'bad'], ascending=[True, False])

elif asc == 0:

ksds2 = ksds.sort_values(by=['pred', 'bad'], ascending=[False, False])

ksds2.index = range(len(ksds2.pred))

ksds2['cumsum_good2'] = 1.0*ksds2.good.cumsum()/sum(ksds2.good)

ksds2['cumsum_bad2'] = 1.0*ksds2.bad.cumsum()/sum(ksds2.bad)

# ksds1 ksds2 -> average

ksds = ksds1[['cumsum_good1', 'cumsum_bad1']]

ksds['cumsum_good2'] = ksds2['cumsum_good2']

ksds['cumsum_bad2'] = ksds2['cumsum_bad2']

ksds['cumsum_good'] = (ksds['cumsum_good1'] + ksds['cumsum_good2'])/2

ksds['cumsum_bad'] = (ksds['cumsum_bad1'] + ksds['cumsum_bad2'])/2

# ks

ksds['ks'] = ksds['cumsum_bad'] - ksds['cumsum_good']

ksds['tile0'] = range(1, len(ksds.ks) + 1)

ksds['tile'] = 1.0*ksds['tile0']/len(ksds['tile0'])

qe = list(np.arange(0, 1, 1.0/n))

qe.append(1)

qe = qe[1:]

ks_index = Series(ksds.index)

ks_index = ks_index.quantile(q = qe)

ks_index = np.ceil(ks_index).astype(int)

ks_index = list(ks_index)

ksds = ksds.loc[ks_index]

ksds = ksds[['tile', 'cumsum_good', 'cumsum_bad', 'ks']]

ksds0 = np.array([[0, 0, 0, 0]])

ksds = np.concatenate([ksds0, ksds], axis=0)

ksds = DataFrame(ksds, columns=['tile', 'cumsum_good', 'cumsum_bad', 'ks'])

ks_value = ksds.ks.max()

ks_pop = ksds.tile[ksds.ks.idxmax()]

print ('ks_value is ' + str(np.round(ks_value, 4)) + ' at pop = ' + str(np.round(ks_pop, 4)))

# chart

plt.plot(ksds.tile, ksds.cumsum_good, label='cum_good',

color='blue', linestyle='-', linewidth=2)

plt.plot(ksds.tile, ksds.cumsum_bad, label='cum_bad',

color='red', linestyle='-', linewidth=2)

plt.plot(ksds.tile, ksds.ks, label='ks',

color='green', linestyle='-', linewidth=2)

plt.axvline(ks_pop, color='gray', linestyle='--')

plt.axhline(ks_value, color='green', linestyle='--')

plt.axhline(ksds.loc[ksds.ks.idxmax(), 'cumsum_good'], color='blue', linestyle='--')

plt.axhline(ksds.loc[ksds.ks.idxmax(),'cumsum_bad'], color='red', linestyle='--')

plt.title('KS=%s ' %np.round(ks_value, 4) +

'at Pop=%s' %np.round(ks_pop, 4), fontsize=15)

return ksds

####################### over ##########################作图效果如下:以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持中文源码网。

亲,试试微信扫码分享本页! *^_^*

python实现ks算法_Python绘制KS曲线的实现方法相关推荐

  1. python 曲线分析_大数据分析之Python计算KS值并绘制KS曲线

    本篇教程探讨了大数据分析之Python计算KS值并绘制KS曲线,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. python实现KS曲线,相关使用方法请参考上篇博客-R语言实现K ...

  2. python k近邻算法_python中的k最近邻居算法示例

    python k近邻算法 K最近邻居(KNN) (K-Nearest Neighbors (KNN)) KNN is a supervised machine learning algorithm t ...

  3. python 3d绘图模块_Python绘制3D图形

    3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行3D图形的绘制,包括3D散点.3D表面.3D轮廓.3D直线(曲线)以及3D文字等的绘制 ...

  4. python数圈算法_Python实现随机爬山算法

    随机爬山是一种优化算法.它利用随机性作为搜索过程的一部分.这使得该算法适用于非线性目标函数,而其他局部搜索算法不能很好地运行.它也是一种局部搜索算法,这意味着它修改了单个解决方案并搜索搜索空间的相对局 ...

  5. python生成热度图_Python 绘制热度图(seaborn)

    原博文 2020-05-08 15:16 − 进行数据处理时,对于数据的可视化展示可以更好的表现数据的关系 论文中,漂亮的热度图会让人眼前一亮 Seaborn 中的 heatmap就可以用来创建热度图 ...

  6. 分类算法如何绘制roc曲线_ROC曲线绘制方法

    ROC(Receiver Operating Characteristic)曲线即受试者工作特征曲线.ROC曲线与坐标轴围成的面积被称为AUC(Area Under Curve),这两个指标和敏感性. ...

  7. python文字识别算法_Python图像处理之图片文字识别(OCR)

    OCR与Tesseract介绍 将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR).可以实现OCR 的底层库并不多,目前很多库都是使用共同的几 ...

  8. python求素数算法_Python程序最多可计算n个质数(使用不同算法)

    python求素数算法 There are various methods through which we can calculate prime numbers upto n. 我们可以通过多种方 ...

  9. python扫雷 高级算法_Python玩转算法—扫雷

    此题来自LeetCode上的一道难度为Medium的题,说是有一张玩到一半的扫雷地图,接下来给你指定一个点击位置,让你预测点击之后,地图将发生怎么样的变化.看到这道题,瞬间让我想起了以前玩扫雷的日子, ...

最新文章

  1. CUDA C 纹理提取Texture Fetching
  2. jenkins内存溢出的一些解决过程
  3. ASP.NET应用程序
  4. TCP/IP 协议栈及 OSI 参考模型详解
  5. yii框架下使用redis
  6. [蓝桥杯2016初赛]报纸页数-生活常识+思维
  7. leetcode刷题:求容器中能乘最大多少水
  8. hasLayout与Block formatting contexts的学习(上)
  9. 警告: Can't find the request for http://localhost:8080/ibatisSpringDemo/ws/testWS's Observer
  10. 最大连续子序列和的问题
  11. 关于struts框架的优缺点
  12. 商标45类分类表明细表_商标45类分类表
  13. unity ps4 下碰到的坑
  14. C++ 递归求数组的平均数
  15. 扁豆凝集素/红藻凝集素GRFT/蓝藻凝集素CVN/香蕉凝集素H84-植物凝集素
  16. 你需要一份更绝佳的文章排版与设计
  17. “放心消费”宣言传递正品心智,网易考拉8.16大促首日获用户好评
  18. badboy录制php,Jmeter(二十九) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy2(详解教程)...
  19. 帝国CMS 7.2 蓝色响应式网站模板自适应宽屏智能整站源码 A1
  20. Powerpivot PowerBI相关组件下载安装(附操作截图)

热门文章

  1. js为什么设置为单线程,怎么实现多线程
  2. xarray+cfgrib读取grib文件——报错总结
  3. 4.12.4nbsp;约翰bull;梅纳德bull;凯恩斯
  4. 三种方法求最大公约数(C语言版)
  5. pyecharts渲染图片的三种方法
  6. 深富策略:传统蓝筹与成长股跷跷板效应明显
  7. Oracle安装步骤(记录)
  8. 解锁电机气隙公差分析之奥秘!
  9. fieldOfView
  10. mysql分组之后再求和