IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> woe编码对于少部分离散变量和大部分的离散变量 -> 正文阅读

[Python知识库]woe编码对于少部分离散变量和大部分的离散变量

from woe_bin import woe_bin
import sys
def woe_bin(merge_data,label):
    wb = woe_bin(indata = merge_data, target=label, min_group_rate=0.05, max_bin=6, bin_method='mono', alg_method='iv')
    #print(wb)
    mapiv = wb.split_data()
    #print(mapiv)
    mapiv.to_csv('woe_0120_调整_woe_1.csv')
    mapiv1 = mapiv[mapiv['iv'] >= 0.02]
    #转为woe格式
    w_tab = wb.apply_woetab(merge_data, mapiv1)
    #print(w_tab)
#    w_tab.to_csv('data_woe值.csv')
    return w_tab

def lisan_woe(merge_data,t_data,variable,target):
? ? y_all = len(merge_data[target])
? ? y_1 = sum(merge_data[target])
? ? y_0 = y_all - y_1
? ? ##对于特殊部分的woe编码

? ? for k in variable:
? ? ? ? dic_count = {}
? ? ? ? dic_bad = {}
? ? ? ? dic_good = {}
? ? ? ? j = 0
? ? ? ? mt = merge_data.groupby([k])[target].count().values
? ? ? ? mt_sum = merge_data.groupby([k])[target].sum().values
? ? ? ? for i in merge_data.groupby([k])[target].count().index:
? ? ? ? #df.groupby([col])[target]
# ? ? ? ? ? ?print(i)
# ? ? ? ? ? ?print(mt[j])
? ? ? ? ? ? dic_count[i] = mt[j]
? ? ? ? ? ? dic_bad[i] = mt_sum[j]
? ? ? ? ? ? dic_good[i] = mt[j]-mt_sum[j]
? ? ? ? ? ? j += 1
? ??
? ? ? ? woe = {}
? ? ? ? for i in merge_data.groupby([k])[target].count().index:
? ? ? ? ? ? woe[i] = np.log(dic_bad[i]/y_1) - np.log(dic_good[i]/y_0)
? ? ? ? ? ? if abs(woe[i]) == np.inf:
? ? ? ? ? ? ? ? woe[i] = np.log((dic_bad[i]+0.05)/y_1) - np.log((dic_good[i]+0.05)/y_0)
? ? ? ? ? ? ? ??
? ? ? ? null_good,null_bad = y_0-sum(dic_good.values()),y_1-sum(dic_bad.values())
? ? ? ? null_woe = np.log(null_bad/y_1)-np.log(null_good/y_0)
? ? ? ? if null_good == 0 and null_bad == 0:
? ? ? ? ? ? 1
? ? ? ? elif abs(null_woe) == np.inf:
? ? ? ? ? ? null_woe = np.log((null_bad+0.05)/y_1)-np.log((null_good+0.05)/y_0)
? ? ? ? ? ? woe[np.NaN] = null_woe
? ? ? ? else:
? ? ? ? ? ? woe[np.NaN] = null_woe
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? listed = merge_data[k]
? ? ? ? t_data['W_'+k] = listed.map(woe)
? ? return t_data
lisan_woe(merge_data,w_tab,bp,'is_ovdu')

#merge_data是样本数据,'label'是目标变量

w_tab =?woe_bin(merge_data,'label')

#读取分箱结果

ww = pd.read_csv('woe_0120_调整_woe_1.csv')

#查找只有少量离散变量从而无法分箱的情况

bp =?set(merge_data.columns) - set(np.unique(ww['varname']))?

lisan_woe(merge_data,w_tab,bp,target)

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 13:02:46  更:2022-02-16 13:05:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:19:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码