iv值计算 Python,iv值计算sql

  iv值计算 Python,iv值计算sql

  1.代码

  基于朱皮特笔记本

  #导包

  将数组作为铭牌导入

  导入数学

  进口熊猫作为螺纹中径

  从sklearn.utils.multiclass导入目标类型

  从科学计算导入统计

  #求不幸值和输入阀交互式视讯自变量(独立变量)值

  def woe(X,y,event):

  res_woe=[] #列表存放不幸字典

  res_iv=[] #列表存放输入阀交互式视讯自变量(独立变量)

  X1=feature_discretion(X) #对连续型特征进行处理

  对于范围(0,X1.shape[-1])中的我:#遍历所有特征

  x=X1[:i] #单个特征

  woe_dict,iv1=woe_single_x(x,y,event) #计算单个特征的不幸值

  res_woe.append

  res_iv.append(iv1)

  return np.array(res_woe),np.array(res_iv) #返回数组

  #求单个特征的不幸值

  def woe_single_x(x,y,event):

  event_total,non_event_total=count_binary(y,event) #计算好人坏人总数

  x _ label=NP。唯一(x)#特征中的分段

  woe_dict={} #存放每个分段的名称以及其对应的不幸值

  iv=0

  对于x标签中的x1:#遍历每个分段

  y1=y[np.where(x==x1)[0]]

  事件计数,非事件计数=计数二进制(y1,事件=事件)

  速率事件=1.0 *事件计数/事件总数

  比率_非事件=1.0 *非事件计数/非事件总数

  #悲哀无穷大时处理

  如果rate_event==0:

  print()#print({ ,x1, } :全是好人) #只输出不做处理

  elif rate_non_event==0:

  print()#print({ ,x1, } :全是坏人)

  否则:

  woe1=math.log(速率_事件/速率_非事件)

  woe_dict[x1]=woe1

  iv=(费率_事件-费率_非事件)* woe1

  返回悲哀_字典,四

  #计算个数

  def count_binary(a,event):

  event_count=(a==event).总和()

  non_event_count=a.shape[-1] -事件计数

  返回事件计数,非事件计数

  #判断特征数据是否为离散型

  定义特征_判断(十):

  temp=[]

  对于范围(0,X.shape[-1])中的我:

  x=X[:i]

  x_type=目标类型(十)

  如果pd .系列(列表.dtype!=O :

  x1=离散(十)

  临时追加(x1)

  否则:

  临时追加(十)

  返回np.array(临时).T

  #对连续型特征进行离散化

  定义离散(十):

  res=np.array([0] * x.shape[-1],dtype=int)

  对于范围(5)中的我:

  第1点=统计。百分比分数(x,i * 20)

  第2点=统计。百分比分数(x,(i 1) * 20)

  x1=x[NP。其中((x=点1)(x=点2))]

  mask=np.in1d(x,x1)

  res[mask]=(i 1)

  返回资源

  2.数据

  读取数据

  df=PD。read _ CSV(电话_测试。CSV’)

  目标变量

  y=df[状态]。价值观念

  所有特征

  X=df.drop([status , sid , uid],axis=1).价值观念

  3.结果

  将特征的静脉的值和特征构建成字典并按静脉的值对特征进行排序

  dic=dict(zip(a,b)) #a为静脉的值列表,b为特征列表

  dic_sort=sorted(dic.items(),key=lambda x:x[1],reverse=True)

  部分截图

  历史中提交的图片或压缩文件

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: