温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何进行大数据中R语言的异常值处理

发布时间:2021-12-27 17:54:50 来源:亿速云 阅读:1127 作者:柒染 栏目:大数据

如何进行大数据中R语言的异常值处理,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

 今天分享一下另一种脏数据-异常值的处理。

异常值一般会拉高或拉低数据的整体情况,因此需要对异常值进行处理。

一 异常值检验

1.1  箱线图方法

绘制箱线图,并标注出异常值

set.seed(1)test <- c(rnorm(100, mean = 5, sd = 1), runif(100, min = 0.1, max = 50))library(ggplot2)ggplot(data=NULL,mapping=aes(x='',y=test))+geom_boxplot(outlier.colour = 'red', outlier.shape = 17)

如何进行大数据中R语言的异常值处理

1.2 平均值±3个标准差方法

set.seed(1)test <- c(rnorm(100, mean = 5, sd = 1), runif(100, min = 0.1, max = 50))min<-mean(test)-3*sd(test)   max<-mean(test)+3*sd(test)#返回异常值的下标which(test > max)#返回异常值的数值test[which(test > max)]

1.3  四分位数和四分位距方法

#获取上下四分位数和四分位距

set.seed(1)test <- c(rnorm(100, mean = 5, sd = 1), runif(100, min = 0.1, max = 50))Q_xia <- quantile(test, probs = 0.25)Q_shang <- quantile(test, probs = 0.75)Q_range <- Q_shang - Q_xiaQ_xia ; Q_shang ; Q_range     25% 4.959337      75% 18.87708      75% 13.91775

#找出异常点

which(test > Q_shang + 1.5*Q_range)[1] 111 114 115 118 119 125 130 143 150 152 160 183 193 200value[which(test > Q_shang + 1.5*Q_range)][1] 48.07436 47.40352 40.94987 47.67244 47.69126 46.20603 42.71467 45.52748 [9] 47.15356 46.65220 46.74110 44.02792 49.08002 46.46977

    以上的三种方法均可以找到数据集中的异常值,下面介绍常见的处理异常值的方式。

二 异常值处理

    异常值一般有删除或替换两种处理方式。删除简单,但可能也造成数据信息丢失,下面主要说一下替换。

2.1  用上四分位数的1.5倍四分位距或下四分位数的1.5倍四分位距替换

#设定数据集set.seed(1)test <- c(rnorm(100, mean = 5, sd = 1), runif(100, min = 0.1, max = 50))test1 <- test
#查看原始数据情况test[c(111,114,115)][1] 48.07436 47.40352 40.94987
#查看替换后数据情况imp1 <- Q_shang + 1.5*Q_rangetest1[which(test1 > Q_shang + 1.5*Q_range )] <- imp1test1[c(111,114,115)]39.7537 39.7537 39.7537

当然也可以根据实际情况用中位数或者均值替代。

2.2 盖帽法

    令数据集合中90%以上的点值赋值为90%时候的值;小于10%的点值赋值为10%时候的值,百分比数据可根据实际情况调整,仅供参考。

#设定数据集

set.seed(1)test <- c(rnorm(100, mean = 5, sd = 1), runif(100, min = 0.1, max = 50))test2 <- test

#查看原始数据q10,q90

q10 <- quantile(test2, 0.1)q90 <- quantile(test2, 0.9)q10 ; q90  10% 4.249007      90% 35.23009 head(test2[which(test2 < q10)])[1] 4.164371 4.179532 2.785300 3.010648 3.529248 3.622940

#对数据进行替换

test2[test2 < q10] <- q10test2[test2 > q90] <- q90

#查看替换结果

summary(test2)  Min. 1st Qu.  Median    Mean 3rd Qu.    Max.   4.249   4.959   6.169  12.701  18.877  35.230

    上面就是常见的检测数据集的异常值以及简单的替换异常值的常用方法,结合之前缺失值的处理,即完成了对数据的简单“清洗”过程。

关于如何进行大数据中R语言的异常值处理问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI