评分卡模型开发-用户数据异常值处理

用户数据缺失值处理见上篇:
http://blog.csdn.net/lll1528238733/article/details/76599626

缺失值处理完毕后,我们还需要进行异常值处理。异常值是指明显偏离大多数抽样数据的数值,比如个人客户的年龄大于100时,通常认为该值为异常值。找出样本总体中的异常值,通常采用离群值检测的方法。
离群值检测的方法有单变量离群值检测、局部离群值因子检测、基于聚类方法的离群值检测等方法。由于本文采用的样本总体GermanCredit已经进行了数据预处理,即已经做了缺失值和异常值处理,因此,我们以随机产生的样本为例来说明离群值检测的方法。
(1)第一种方法是单变量离群值检测,该方法的原理是通过求解单变量数值的第1个和第3个四分位数的值,将数值小于第1个四分位数和大于第3个四分位数的值定义为离群值。该方法可通过R包grDevices中的boxplot.stats()函数实现。
我们用随机数来演示获取异常值的方法,代码如下:

> set.seed(1100)   #设置获取随机数的种子
> x<-rnorm(100)    #生成100个随机数,并检测异常值
> summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-2.2951 -0.4288  0.1981  0.1243  0.6693  2.3804 
> boxplot.stats(x)$out     #检测并输出异常值
[1]  2.380427 -2.295102
> boxplot(x)

这里写图片描述
图3.1 箱图表示的异常值

上述单变量离群值检测方法也可简单地应用到多变量的数据集上。下例中,我们简单地将该方法扩展到在二维数据框中检测离群值。我们先分别在两列数据上进行离群值检测,再从检测出的离群值中抽取重叠的部分作为二位数据框的离群值点,在如3.2中用“+”表示离群值点。代码如下:

set.seed(1100)
x<-rnorm(100)
y<-rnorm(100)
df<-data.frame(x,y)      #将x,y两个随机序列组成数据框
rm(x,y)                  #删除x,y两个变量
attach(df)
(a<-which(x %in%boxplot.stats(x)$out))
(b<-which(y %in%boxplot.stats(y)$out))
detach(df)
(outlier1<-intersect(a,b))
plot(df)
points(df[outlier1,],col="red",pch="+",cex=2.0)
#将离群值用红色的“+”表示

我们可以看到不存在这样的离群值。

这里写图片描述
图3.2 二维数据框的离群值检测结果

当然,我们可将变量x和y的离群值都作为整个数据框的离群值,如图3.3所示,离群值用“*”表示。代码如下:


                
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值