【Python 计算 IV 值】 IV(Information Value,信息值)是一种衡量分类变量对目标变量区分能力的统计量,常用于数据预处理阶段,评估特征的重要性。在机器学习和数据挖掘中,我们通常会通过IV值来选择或者排序特征,以便了解哪些特征对于模型的预测效果最有贡献。 以下是一个使用Python计算IV值的示例: ```python import numpy as np import pandas as pd def CalcIV(Xvar, Yvar): N_0 = np.sum(Yvar==0) # 计算类别为0的样本数量 N_1 = np.sum(Yvar==1) # 计算类别为1的样本数量 N_0_group = np.zeros(np.unique(Xvar).shape) # 初始化类别0的各组样本数量 N_1_group = np.zeros(np.unique(Xvar).shape) # 初始化类别1的各组样本数量 for i in range(len(np.unique(Xvar))): # 遍历Xvar的每个唯一值 N_0_group[i] = Yvar[(Xvar == np.unique(Xvar)[i]) & (Yvar == 0)].count() # 统计类别0在该组的数量 N_1_group[i] = Yvar[(Xvar == np.unique(Xvar)[i]) & (Yvar == 1)].count() # 统计类别1在该组的数量 iv = np.sum((N_0_group/N_0 - N_1_group/N_1) * np.log((N_0_group/N_0)/(N_1_group/N_1))) # 计算IV值 return iv def caliv_batch(df, Kvar, Yvar): df_Xvar = df.drop([Kvar, Yvar], axis=1) # 获取除了主键和目标变量外的所有列 ivlist = [] # 存储各特征的IV值 for col in df_Xvar.columns: iv = CalcIV(df[col], df[Yvar]) # 计算每列的IV值 ivlist.append(iv) names = list(df_Xvar.columns) # 获取特征名称 iv_df = pd.DataFrame({'Var': names, 'Iv': ivlist}, columns=['Var', 'Iv']) # 创建IV值数据框 return iv_df ``` 在这个示例中,`CalcIV`函数计算单个特征的IV值,`caliv_batch`函数则用于批量计算数据集中所有特征的IV值。输入参数`df`是分箱处理后的数据集,`Kvar`为主键列名,`Yvar`为目标变量列名。计算过程是通过遍历特征的每个取值,分别统计类别0和类别1的样本数量,然后根据IV值的计算公式进行计算。 IV值的计算公式为: \[ IV = \sum_{i=1}^{n}\frac{N_i}{N} \left( \frac{P_{yi}}{P_y} - \frac{P_{ni}}{P_n} \right) \log_2\left(\frac{P_{yi}}{P_{ni}}\right) \] 其中,\( N_i \) 是第i个特征值对应的样本数量,\( N \) 是总样本数量,\( P_{yi} \) 和 \( P_{ni} \) 分别是类别1和类别0在第i个特征值中的比例,而 \( P_y \) 和 \( P_n \) 是整个数据集中类别1和类别0的比例。 【Python基础:切片、迭代与生成列表】 在Python中,对序列类型(如list、tuple、str等)进行切片操作非常常见。切片可以方便地获取序列的一部分。例如,对于一个list `L = ['Adam', 'Lisa', 'Bart', 'Paul']`,取前3个元素可以这样操作: ```python L[0:3] # 或者 L[:3] ``` 这将返回一个新的list,包含索引0、1和2的元素。 此外,切片操作还可以设置步长,例如取每隔一个元素的子序列: ```python L[::2] ``` 这将返回一个新的list,包含索引0、2的元素。 倒序切片也很方便,比如要获取列表的倒数第二个到倒数第一个元素,可以使用: ```python L[-2:] ``` 对于字符串,切片操作同样适用: ```python s = 'Hello, World!' s[7:12] ``` 这将返回字符串 'World'。 在Python中,还可以通过迭代器进行迭代操作,例如遍历一个list: ```python for item in L: print(item) ``` 生成列表通常使用列表推导式,如创建一个由1到10的整数列表: ```python [num for num in range(1, 11)] ``` 这些基础知识在Python编程中非常基础且实用,对于理解和编写高效的代码至关重要。



















- InsomniaKang2021-03-16什么lj都能拿来卖
- 李想啊2023-04-01真的lj东西 #毫无价值

- 粉丝: 8
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- PP网络借贷平台建设专题方案.docx
- C#6-数组和集合对象.ppt
- 安卓图书标准管理系统.doc
- 网络金融第六章.ppt
- 中国人民银行行计算机中心机房管理详细规定.doc
- 电气工程cad制图规范演示幻灯片.ppt
- 大学生网络购物调研研究报告.doc
- 移动通信端到端数据业务优化介绍.ppt
- MATLAB专业课程设计时钟.doc
- 智能变电站自动化全新体系基础规范论述.docx
- 基于PLC的自动浇灌系统综合设计.docx
- 单片机的双机串口通信优秀课程设计.doc
- DICTS(清理大cad文件)插件使用.doc
- 推动网络媒体高质量发展心得体会10篇.doc
- 第4章主流软件开发方法——面向对象入门(C#从入门到精通).ppt
- VISIO网络工程师图标库(IT).ppt


