scorecardpy是一个用于构建评分卡模型的Python库。
在评分卡模型的构建过程中,变量选择是一个关键的步骤,而var_filter函数则是用于进行变量筛选的工具。
本文和你一起来探索scorecardpy中的var_filter函数,让你以最短的时间明白这个函数的原理。
也可以利用碎片化的时间巩固这个函数,让你在处理工作过程中更高效。
安装scorecardpy
var_filter函数定义
var_filter函数实例
3.1 导入用到的库
3.2 导入数据
3.3 用默认参数对变量进行筛选
3.4 设置参数查看变量删除的原因
3.5 设置强制保留的列
var_filter是scorecardpy库下的函数,调用需先要安装库。打开cmd,安装语句如下:
pip install scorecardpy
var_filter是scorecardpy库中一个函数,用于变量筛选,以帮助识别并保留对预测目标变量有重要影响的特征。 其基本调用语法如下:
import scorecardpy as sc
sc.var_filter(dt, y, x=None, iv_limit=0.02, missing_limit=0.95, identical_limit=0.95, var_rm=None, var_kp=None, return_rm_reason=False, positive='bad|1')
参数详解:
dt
:数据框,通常是DataFrame,包含所有待筛选的变量和目标变量。
y
:目标变量名,即需要预测或分类的列名。
x
:如果指定了x,则只对x列表中的变量进行筛选,否则考虑dt中除y以外的所有变量。
iv_limit:IV(信息价值)阈值,默认值0.02,只有当变量的IV值大于这个阈值时,该变量才会被保留。该值用于衡量一个变量对目标变量的预测能力。
missing_limit:缺失值占比阈值,默认值0.95,如果一个变量的缺失值占比超过这个阈值,那么该变量会被剔除。
identical_limit:相同值占比阈值,默认值0.95,如果一个变量的相同值占比(该变量某一取值占全部样本的比例)超过这个阈值,那么该变量会被认为是不具有区分度的,会被剔除。
var_rm
:需要手动剔除的变量列表,默认值None。即使这些变量的统计指标满足其他条件,它们也会被从数据集中移除。
var_kp
:需要手动保留的变量列表,默认值None。这些变量即使不满足其他筛选条件,也会被保留在数据集中。
return_rm_reason
:是否返回被剔除变量的原因,默认值False。如果值为True,则返回被剔除变量的原因,可以帮助使用者了解哪些变量因何原因被剔除。
positive
:指示正面事件的标签或值。在评分卡模型中,通常关心的是违约或不良事件,这个参数用于指定这些事件的标识。。
根据数据特性和业务需求合理设置这些参数,可以有效地筛选出对模型构建有贡献的变量,并剔除那些对模型性能没有帮助或者可能引入噪声的变量。这有助于简化模型,提高模型的稳定性和预测性能。
三、var_filter函数实例 1 导入用到的库
首先导入用到的库,具体代码如下:
import numpy as np
import pandas as pd
import scorecardpy as sc
其中import xx as yy是为了代码简洁给xx库取了个简洁的别名,后续可以用yy代替xx。
如有未安装库的小伙伴,可自行百度安装。
2 导入数据
为了大家复现方便,直接导入scorecardpy自带的数据集germancredit,具体代码如下:
dt = sc.germancredit()
print(dt.shape)
得到结果:
(1000, 21)
从结果知,germancredit数据集包含1000行21列。 为了对数据有更清晰的了解,我们打印前几行数据看下,具体代码如下: dt.head(5)
得到结果: 可以发现数据集中既有数值型数据,也有类别型数据 3 用默认参数对变量进行筛选
接着用默认参数应用var_filter函数对变量进行筛选,具体代码如下:
dt_s = sc.var_filter(dt, y='creditability')
dt_s.shape
得到结果:
(1000, 14)
从结果知,var_filter可以处理类别型变量和数值型变量,且把原始数据集中21个变量通过变量筛选,保留了14个变量。
4 设置参数查看变量删除的原因
有时候我们想查看变量删除的原因,可以设置return_rm_reason为True实现,具体代码如下:
dt_s = sc.var_filter(dt, y='creditability', return_rm_reason=True)
查看变量删除的原因,具体代码如下:
dt_s['rm']
得到结果:
可以发现,变量foreign_worker删除的原因是单一值占比超过了95%,变量job删除的原因是IV值低于0.02,其他变量的删除原因详见rm_reason列。
接着来看下删除变量保留的数据集,具体代码如下:
dt_s['dt']
得到结果:
从结果知,var_filter函数把原始数据集中21个变量通过变量筛选,保留了14个变量。
5 设置强制保留的列
接着把IV低于0.02的job列,设置var_kp参数强制保留下来,具体代码如下:
dt_s = sc.var_filter(dt, y='creditability', var_kp='job')
dt_s.shape
得到结果:
(1000, 15)
可以发现当前保留的列比之前的14列多了1列。
进一步打印保留变量列名,具体代码如下:
list(dt_s.columns)
得到结果:
['age_in_years',
'credit_amount',
'credit_history',
'duration_in_month',
'housing',
'installment_rate_in_percentage_of_disposable_income',
'job',
'other_debtors_or_guarantors',
'other_installment_plans',
'present_employment_since',
'property',
'purpose',
'savings_account_and_bonds',
'status_of_existing_checking_account',
'creditability']
从结果知,job列在保留列中。
至此,Python中的var_filter函数已讲解完毕,如想了解更多Python中的函数,可以翻看公众号中“学习Python”模块相关文章。
【部分群限时免费进】分群讨论学习Python、玩转Python、风控建模【29.9元进】、人工智能、数据分析相关问题,还提供练习数据资料、招聘内推信息、优秀文章、学习视频、公众号文章答疑,也可交流工作中遇到的难题。如需添加微信号19967879837,加时备注想进的群,比如学习python。
【评分卡实现】应用Python中的toad.ScoreCard函数实现评分卡
【Python常用函数】一文让你彻底掌握Python中的toad.quality函数
【Python数据挖掘】应用toad包中的KS_bucket函数统计好坏样本率、KS值
限时免费进群
19967879837
添加微信号、手机号