<强> 更多大数据分析,建模等内容请关注公众号《bigdatamodeling》 强>
python实现KS曲线,相关使用方法请参考上篇博客- r语言实现KS曲线
代码如下:
<代码> # # # # # # # # # # # # # # # # # # # # # # # PlotKS # # # # # # # # # # # # # # # # # # # # # # # # # # def PlotKS(仅仅,标签,n, asc): #仅仅是分数:asc=1 #仅仅是概率:asc=0 pred=仅仅#预测值 坏=标签#取1为坏,0为好 ksds=DataFrame({“坏”:糟糕,“pred”: pred}) ksds(“好”)=1 - ksds.bad 如果asc==1: ksds1=ksds。sort_values (=皃red”,“坏”,提升=(真的,真的)) elif asc==0: ksds1=ksds。sort_values (=皃red”,“坏”,提升=[假,真]) ksds1。指数=范围(len (ksds1.pred)) ksds1 [' cumsum_good1 ')=1.0 * ksds1.good.cumsum()/笔(ksds1.good) ksds1 [' cumsum_bad1 ')=1.0 * ksds1.bad.cumsum()/笔(ksds1.bad) 如果asc==1: ksds2=ksds。sort_values (=皃red”,“坏”,提升=[真,假]) elif asc==0: ksds2=ksds。sort_values (=皃red”,“坏”,提升=[假,假]) ksds2。指数=范围(len (ksds2.pred)) ksds2 [' cumsum_good2 ')=1.0 * ksds2.good.cumsum()/笔(ksds2.good) ksds2 [' cumsum_bad2 ')=1.0 * ksds2.bad.cumsum()/笔(ksds2.bad) # ksds1 ksds2→平均 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 ']=范围(1,len (ksds.ks) + 1) ksds(“瓷砖”)=1.0 * ksds [' tile0 ']/len (ksds [' tile0 ']) 量化宽松政策=列表(np。不等(1.0 0 1/n)) qe.append (1) 量化宽松政策=量化宽松(1:) ks_index=系列(ksds.index) ks_index=ks_index。分位数(q=qe) ks_index=np.ceil (ks_index) .astype (int) ks_index=列表(ks_index) ksds=ksds.loc [ks_index] ksds=ksds[[“瓷砖”,“cumsum_good”,“cumsum_bad”、“ks”]] ksds0=np。数组([[0,0,0,0]]) ksds=np。连接([ksds0, ksds],轴=0) ksds=DataFrame (ksds列=[“瓷砖”,“cumsum_good”,“cumsum_bad”、“ks”)) ks_value=https://www.yisu.com/zixun/ksds.ks.max () ks_pop=ksds.tile [ksds.ks.idxmax ()) 打印(ks_value是' + str (np。轮(ks_value, 4)) + + str (np流行=B?ks_pop, 4))) #图 plt.plot (ksds。瓷砖,ksds。cumsum_good标签=癱um_good”, 颜色=袄丁?线型=?”,线宽=2) plt.plot (ksds。瓷砖,ksds。cumsum_bad标签=癱um_bad”, 颜色='红',线型=?”,线宽=2) plt.plot (ksds。瓷砖,ksds。ks,标签=発s”, 颜色=奥躺?线型=?”,线宽=2) plt。axvline (ks_pop,颜色=盎疑?线型=?”) plt。axhline (ks_value颜色=奥躺?线型=?”) plt.axhline (ksds.loc [ksds.ks.idxmax (), ' cumsum_good '],颜色=袄丁?线型=?”) plt.axhline (ksds.loc [ksds.ks.idxmax (), ' cumsum_bad '],颜色=臁?线型=?”) plt。标题(KS=% s % np。(ks_value 4) + 在流行=% s % np。轮(ks_pop 4)字形大?15) 返回ksds # # # # # # # # # # # # # # # # # # # # # # #在# # # # # # # # # # # # # # # # # # # # # # # # # # 代码>
作图效果如下: