麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Python > 正文

python自動分箱,計算woe,iv的實例代碼

2024-09-09 19:02:41
字體:
來源:轉載
供稿:網友

筆者之前用R開發評分卡時,需要進行分箱計算woe及iv值,采用的R包是smbinning,它可以自動進行分箱。近期換用python開發, 也想實現自動分箱功能,找到了一個woe包,地址https://pypi.org/project/woe/,可以直接 pip install woe安裝。

由于此woe包官網介紹及給的例子不是很好理解,關于每個函數的使用也沒有很詳細的說明,經過一番仔細探究后以此文記錄一下該woe包的使用及其計算原理。

例子

官方給的例子不是很好理解,以下是我寫的一個使用示例。以此例來說明各主要函數的使用方法。計算woe的各相關函數主要在feature_process.py中定義。

import woe.feature_process as fpimport woe.eval as eval #%% woe分箱, iv and transformdata_woe = data #用于存儲所有數據的woe值civ_list = []n_positive = sum(data['target'])n_negtive = len(data) - n_positivefor column in list(data.columns[1:]): if data[column].dtypes == 'object': civ = fp.proc_woe_discrete(data, column, n_positive, n_negtive, 0.05*len(data), alpha=0.05) else:   civ = fp.proc_woe_continuous(data, column, n_positive, n_negtive, 0.05*len(data), alpha=0.05) civ_list.append(civ) data_woe[column] = fp.woe_trans(data[column], civ) civ_df = eval.eval_feature_detail(civ_list,'output_feature_detail_0315.csv')#刪除iv值過小的變量iv_thre = 0.001iv = civ_df[['var_name','iv']].drop_duplicates()x_columns = iv.var_name[iv.iv > iv_thre]

計算分箱,woe,iv

核心函數主要是freature_process.proc_woe_discrete()與freature_process.proc_woe_continuous(),分別用于計算連續變量與離散變量的woe。它們的輸入形式相同:

proc_woe_discrete(df,var,global_bt,global_gt,min_sample,alpha=0.01)proc_woe_continuous(df,var,global_bt,global_gt,min_sample,alpha=0.01)

輸入:

df: DataFrame,要計算woe的數據,必須包含'target'變量,且變量取值為{0,1}

var:要計算woe的變量名

global_bt:全局變量bad total。df的正樣本數量

global_gt:全局變量good total。df的負樣本數量

min_sample:指定每個bin中最小樣本量,一般設為樣本總量的5%。

alpha:用于自動計算分箱時的一個標準,默認0.01.如果iv_劃分>iv_不劃分*(1+alpha)則劃分。

輸出:一個自定義的InfoValue類的object,包含了分箱的一切結果信息。

該類定義見以下一段代碼。

class InfoValue(object): ''' InfoValue Class ''' def __init__(self): self.var_name = [] self.split_list = [] self.iv = 0 self.woe_list = [] self.iv_list = [] self.is_discrete = 0 self.sub_total_sample_num = [] self.positive_sample_num = [] self.negative_sample_num = [] self.sub_total_num_percentage = [] self.positive_rate_in_sub_total = [] self.negative_rate_in_sub_total = []  def init(self,civ): self.var_name = civ.var_name self.split_list = civ.split_list self.iv = civ.iv self.woe_list = civ.woe_list self.iv_list = civ.iv_list self.is_discrete = civ.is_discrete self.sub_total_sample_num = civ.sub_total_sample_num self.positive_sample_num = civ.positive_sample_num self.negative_sample_num = civ.negative_sample_num self.sub_total_num_percentage = civ.sub_total_num_percentage self.positive_rate_in_sub_total = civ.positive_rate_in_sub_total self.negative_rate_in_sub_total = civ.negative_rate_in_sub_total
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蜜桃视频网站在线观看 | 久久精品视频免费观看 | 在线成人看片 | 免费在线观看毛片视频 | 91精品国产92久久久久 | 国产成人高潮免费观看精品 | 蜜桃欧美性大片免费视频 | 中文字幕一区二区三区四区 | 1314成人网 | 日本黄色一级毛片 | 韩国十九禁高潮床戏在线观看 | 精品无吗乱吗av国产爱色 | 综合国产在线 | 欧美14一15sex性hd | 黄色av片三级三级三级免费看 | 欧美成人精品不卡视频在线观看 | 蝌蚪久久窝 | 天天色宗合 | 国产影视 | 一区二区免费网站 | 久久影院午夜 | 久久爽久久爽久久av东京爽 | 伊久在线| 91精品国产日韩91久久久久久360 | 黄色av免费电影 | 成人免费视频视频在线观看 免费 | 国产精品亚洲欧美 | 羞羞视频免费网站含羞草 | 一区二区久久精品66国产精品 | 一区国产在线观看 | porno video hd 365hd| 农村寡妇偷毛片一级 | 91久久99热青草国产 | 在线无码 | 性 毛片 | 国产91对白叫床清晰播放 | 久久免费视频3 | 亚洲性在线视频 | 青草av.久久免费一区 | 久久久99精品视频 | 91成人免费在线观看 |