如何进行大数据中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)
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_range
test1[which(test1 > Q_shang + 1.5*Q_range )] <- imp1
test1[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语言的异常值处理问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。