网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

php开发技术团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 开发技术 > php开发技术 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

smbinning包:R语言下的分箱处理工具预处理方法

文章来源:网络转载 发布时间:2019-07-12 23:00:43 围观次数:
分享到:

摘要:不同的数据分析工具(例如SAS和SPSS)具有相应的模块,用于对连续数据进行分级操作。 R语言主要使用smbinning包进行数据合并操作。

分箱方法是一种简单且常用的预处理方法。 所谓的“分箱”实际上是根据属性值划分的子间隔。 如果属性值在某个子间隔范围内,则称其将属性值放入由子间隔表示的“框”中。

  不同的数据分析工具(例如SAS和SPSS)具有相应的模块,用于对连续数据进行分级操作。  R语言主要使用smbinning包进行数据合并操作。

library(smbinning)
## Loading required package: sqldf
## Loading required package: gsubfn
## Loading required package: proto
## Loading required package: RSQLite
## Loading required package: DBI
## Warning: package 'DBI' was built under R version 3.3.2
## Loading required package: partykit
## Loading required package: grid
## Loading required package: Formula

以chileancredit的信用数据为例,您可以使用smbinning包来实现数据分箱。 我们来看看数据摘要:


head(chileancredit)
##    CustomerId TOB IncomeLevel   Bal01 MaxDqBin01 MaxDqBin02 MaxDqBin03## 9  0000000185  44           1  604.86          0          0          0## 13 0000000238  79           1 1006.21          0          0          0## 21 0000000346 102           1  299.23          0          0          0## 25 0000000460  NA           1  645.19          0          0          0## 31 0000000549 109        <NA>  218.00          0          0          0## 32 0000000559 183        <NA>   10.32          0          0          0##    MaxDqBin04 MaxDqBin05 MaxDqBin06 MtgBal01 NonBankTradesDq01## 9           0          0          0        0                 0## 13          0          0          0        0                 0## 21          0          0          0        0                 0## 25          0          0          0        0                 0## 31          0          0          0        0                 0## 32          0          0          0        0                 0##    NonBankTradesDq02 NonBankTradesDq03 NonBankTradesDq04 NonBankTradesDq05## 9                  0                 0                 0                 0## 13                 0                 0                 0                 0## 21                 0                 0                 0                 0## 25                 0                 0                 0                 0## 31                 0                 0                 0                 0## 32                 0                 0                 0                 0##    NonBankTradesDq06 FlagGB FlagSample## 9                  0      1          1## 13                 0      1          1## 21                 0      1          1## 25                 0      1          1## 31                 0      1          1## 32                 0      1          1
str(chileancredit)
## 'data.frame':    7702 obs. of  19 variables:##  $ CustomerId       : chr  "0000000185" "0000000238" "0000000346" "0000000460" ...##  $ TOB              : int  44 79 102 NA 109 183 172 76 136 171 ...##  $ IncomeLevel      : Factor w/ 6 levels "0","1","2","3",..: 2 2 2 2 NA NA 1 2 1 1 ...##  $ Bal01            : num  605 1006 299 645 218 ...##  $ MaxDqBin01       : Factor w/ 7 levels "0","1","2","3",..: 1 1 1 1 1 1 1 1 1 1 ...##  $ MaxDqBin02       : Factor w/ 8 levels "0","1","2","3",..: 1 1 1 1 1 1 1 1 1 1 ...##  $ MaxDqBin03       : Factor w/ 8 levels "0","1","2","3",..: 1 1 1 1 1 1 1 2 1 1 ...##  $ MaxDqBin04       : Factor w/ 8 levels "0","1","2","3",..: 1 1 1 1 1 1 1 1 1 1 ...##  $ MaxDqBin05       : Factor w/ 8 levels "0","1","2","3",..: 1 1 1 1 1 1 1 1 1 1 ...##  $ MaxDqBin06       : Factor w/ 8 levels "0","1","2","3",..: 1 1 1 1 1 1 1 1 1 1 ...##  $ MtgBal01         : num  0 0 0 0 0 0 0 0 0 0 ...##  $ NonBankTradesDq01: int  0 0 0 0 0 0 0 0 0 0 ...##  $ NonBankTradesDq02: int  0 0 0 0 0 0 0 0 0 0 ...##  $ NonBankTradesDq03: int  0 0 0 0 0 0 0 0 0 0 ...##  $ NonBankTradesDq04: int  0 0 0 0 0 0 0 1 0 0 ...##  $ NonBankTradesDq05: int  0 0 0 0 0 0 0 1 0 0 ...##  $ NonBankTradesDq06: int  0 0 0 0 0 0 0 1 0 0 ...##  $ FlagGB           : int  1 1 1 1 1 1 1 1 1 1 ...##  $ FlagSample       : int  1 1 1 1 1 1 1 1 1 1 ...

对数据集切分为训练集与测试集两类:FlagSample=1作为训练集,另一半作为测试集:

chileancredit.train=subset(chileancredit,FlagSample==1)
chileancredit.test=subset(chileancredit,FlagSample==0)

以TOB变量为例,我们可以尝试对其进行二值化:

   组合包的分箱原则基于构造条件来推断树木树的监督共享。 因此,需要预先定义目标标签Y,并且将用户好的

和坏的标签FlagGB用作合并的目标标签。
result=smbinning(df=chileancredit.train,y="FlagGB",x="TOB",p=0.05)
## Loading required package: tcltk

在分割框后,smbinning包还提供了smbinning.plot函数来显示分箱效果:

par(mfrow=c(2,2))
boxplot(chileancredit.train$TOB~chileancredit.train$FlagGB,        horizontal=T, frame=F, col="lightgray",main="Distribution")mtext("Time on Books (Months)",3)
smbinning.plot(result,option="dist",sub="Time on Books (Months)")
smbinning.plot(result,option="badrate",sub="Time on Books (Months)")
smbinning.plot(result,option="WoE",sub="Time on Books (Months)")

image.png

图1和图2显示了变量的分布,图3显示了不良标记的比例。 除了缺失值之外,坏标签的比例显示出下降趋势。 图4显示了分箱变量的可疑指标。 悲惨指标是记分卡模型中非常常见的变量评估指标,它反映了变量区分好标签和坏标签的程度。 祸患值越大,组中好标签的比例越高,不良标签的比例越高。


  最后,根据分箱逻辑,smbinning还提供了smbinning.sql函数来形成sql逻辑:

smbinning.sql(result)
## [1] "case when TOB <= 17 then '01: TOB <= 17' when TOB <= 30 then '02: TOB <= 30' when TOB <= 63 then '03: TOB <= 63' when TOB > 63 then '04: TOB > 63' when TOB Is Null then 'TOB Is Null' else '99: Error' end "

根据分箱结果,您还可以使用smbinning.gen函数直接派生原始数据集上的分箱变量:

Chileancredit = smbinning.gen(chileancredit,result,chrname =“gTOB”)

smbinning包还提供IV评估指标。  IV,也称为信息值,是评估变量区分分类标签的能力的指标,通常用于评估记分卡变量。 通常,IV值越高,变量预测能力越好。 在记分卡的构建过程中,分析师也更倾向于选择高IV值,并且具有显着线性关系的变量被包括在模型筛选集中作为初步变量。

sumivt=smbinning.sumiv(chileancredit.train,y="FlagGB")
##                 Char     IV                  Process## 5         MaxDqBin01 2.3771        Factor binning OK## 6         MaxDqBin02 1.8599        Factor binning OK## 12 NonBankTradesDq01 1.8129       Numeric binning OK## 13 NonBankTradesDq02 1.4417       Numeric binning OK## 7         MaxDqBin03 1.3856        Factor binning OK## 14 NonBankTradesDq03 1.1819       Numeric binning OK## 8         MaxDqBin04 1.0729        Factor binning OK## 15 NonBankTradesDq04 0.8948       Numeric binning OK## 9         MaxDqBin05 0.8844        Factor binning OK## 16 NonBankTradesDq05 0.7511       Numeric binning OK## 10        MaxDqBin06 0.6302        Factor binning OK## 17 NonBankTradesDq06 0.5501       Numeric binning OK## 2                TOB 0.5025       Numeric binning OK## 3        IncomeLevel 0.3380        Factor binning OK## 11          MtgBal01 0.1452       Numeric binning OK## 4              Bal01 0.1379       Numeric binning OK## 1         CustomerId     NA   Not numeric nor factor## 18        FlagSample     NA Uniques values of x < 10

最后,您可以使用smbinning.sumiv.plot函数对变量IV值进行排序并将其可视化以便于分析变量。

par(mfrow=c(1,1))
smbinning.sumiv.plot(sumivt,cex=0.8)

image.png

本文由 网络转载 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:smbinning R语言 分箱处理工具 预处理方法

上一篇:史上最全 Python Re 模块讲解
下一篇:R语言调用C语言动态链接库

热门资讯

鼠标向下滚动