亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行大數據中R語言的缺失值處理

發布時間:2021-12-27 17:57:03 來源:億速云 閱讀:531 作者:柒染 欄目:大數據

本篇文章給大家分享的是有關如何進行大數據中R語言的缺失值處理,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

    拿到數據后,在清楚了分析需求后,別急著各種統計、模型一塊上,先給數據做個“清潔”再說。數據中往往會有各種缺失值,異常值,錯誤值等,今天先介紹一下如何處理缺失值,才能更好的數據分析,更準確高效的建模。

一 查看數據集的缺失情況

    R中使用NA代表缺失值,用is.na識別缺失值,返回值為TRUE或FALSE。由于邏輯值TRUE和FALSE分別等價于數值1和0,可用sum()和mean()來獲取數據集的缺失情況。

載入R包及內置數據集

library(VIM)#VIM包的sleep數據集示例data(sleep,package="VIM")

1)查看數據集整體有多少缺失值及百分比

sum(is.na(sleep))mean(is.na(sleep))

2)查看數據集特定變量(列)有多少缺失值及百分比

sum(is.na(sleep$Sleep))mean(is.na(sleep$Sleep))

3)數據集中多個行包含缺失值

mean(!complete.cases(sleep))

4)列出沒有缺失值的行

sleep[complete.cases(sleep),] #利用函數
list <-which(rowSums(is.na(sleep)) > 0) ; sleep[-list,] # 效果同上

5)列出有一個或多個缺失值的行

sleep[!complete.cases(sleep),]list <-which(rowSums(is.na(sleep)) > 0) ; sleep[list,]


二  探索缺失值

2.1 mice包展示數據整體的缺失情況

library(mice)md.pattern(sleep)BodyWgt BrainWgt Pred Exp Danger Sleep Span Gest Dream NonD  42       1        1    1   1      1     1    1    1     1    1  09        1        1    1   1      1     1    1    1     0    0  23        1        1    1   1      1     1    1    0     1    1  12        1        1    1   1      1     1    0    1     1    1  11        1        1    1   1      1     1    0    1     0    0  31        1        1    1   1      1     1    0    0     1    1  22        1        1    1   1      1     0    1    1     1    0  22        1        1    1   1      1     0    1    1     0    0  3         0        0    0   0      0     4    4    4    12   14 38

    其中 ’1’代表完好數據,’0’代表缺失值。左側第一列,’42’代表有42條數據無缺失值,第一個’9’代表9條數據Dream和NonD同時缺失。最后一行返回的就是每一個變量(列)對應的缺失數目,38為一共有多少缺失值。下圖同樣的意思。

如何進行大數據中R語言的缺失值處理

2.2 VIM包展示數據缺失情況

1)展示sleep數據集的整體缺失情況

library("VIM")aggr(sleep,prop=FALSE,numbers=TRUE)

如何進行大數據中R語言的缺失值處理

2)展示sleep數據集感興趣的變量的缺失情況

marginplot(sleep[c("Sleep","Dream")],pch=c(20),col=c("darkgray","red","blue"))

如何進行大數據中R語言的缺失值處理

三  處理缺失值

    當充分了解了缺失值的情況后,可以根據數據量的大小,以及某一列是否為重要的預測作用變量,對數據集中的NA行和某些NA列進行處理。

3.1 刪除缺失值

1)刪除數據集中所有含有NA的行和列

sleep_noNA <- na.omit(sleep)sleep_noNA <- x[complete.cases(sleep),] #兩種一樣的效果

2)刪除所有含有NA的列

na_flag <- apply(is.na(sleep), 2, sum)sleep[,which(na_flag == 0)]

3)刪除所有含有NA的行

na_flag <- apply(is.na(sleep), 1, sum)sleep[which(na_flag == 0),]

4)根據某些列的NA,移除相應的行

sleep[complete.cases(sleep[,c(1,3)]),]

4)表示將向量x中所以NA元素用某個值來代替  

sleep[is.na(sleep)] <- 999

   

3.2 填充缺失值

當數據量不是很大或者變量比較重要時候,可以考慮對缺失值進行填充。

1)常見數值填補

library(Hmisc)data(sleep)#均值填充,適用于接近正態分布impute(sleep$NonD , mean) #中位數填充,偏態數據但是不是很嚴重impute(sleep$Dream , median)# 填充特定值impute(sleep$Span, 0)

2)DMwR包進行kNN最近鄰插補

library(DMwR)data(sleep)data <- sleep                   # 備份數據,對比填充結果set.seed(1120)sleep$BrainWgt[sample(nrow(sleep), 20)] <- NAhead(sleep)   BodyWgt BrainWgt NonD Dream Sleep Span Gest Pred Exp Danger1 6654.000   5712.0   NA    NA   3.3 38.6  645    3   5      32    1.000      6.6  6.3   2.0   8.3  4.5   42    3   1      33    3.385       NA   NA    NA  12.5 14.0   60    1   1      14    0.920      5.7   NA    NA  16.5   NA   25    5   2      35 2547.000   4603.0  2.1   1.8   3.9 69.0  624    3   5      46   10.550       NA  9.1   0.7   9.8 27.0  180    4   4      4

# 最近鄰填補缺失值

knnOutput <- knnImputation(sleep[c(1:6)])anyNA(knnOutput)head(knnOutput)BodyWgt   BrainWgt      NonD    Dream Sleep      Span1 6654.000 5712.00000  2.534467 1.675830   3.3 38.6000002    1.000    6.60000  6.300000 2.000000   8.3  4.5000003    3.385   19.67034 10.109710 2.248604  12.5 14.0000004    0.920    5.70000 12.803345 3.353104  16.5  8.1735685 2547.000 4603.00000  2.100000 1.800000   3.9 69.0000006   10.550   95.83459  9.100000 0.700000   9.8 27.000000

# 將插補值與實際值進行對照

actuals <-data$BrainWgt[is.na(sleep$BrainWgt)]
predicteds <- knnOutput[is.na(sleep$BrainWgt),"BrainWgt"]

# 兩樣本均值檢驗并計算其相似度

t.test(actuals, predicteds)        # 接受差值為0的假設cor(actuals, predicteds)           # 相關系數

    當然根據數據和目的的不同,采用的缺失值處理方式肯定不一樣,需要我們對數據和需求有足夠的認識,做出比較好的判斷和處理。

以上就是如何進行大數據中R語言的缺失值處理,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汶上县| 广饶县| 沙洋县| 康马县| 南陵县| 中西区| 莱阳市| 乌审旗| 封开县| 鄂托克前旗| 汝阳县| 黑山县| 遵义市| 定西市| 阿鲁科尔沁旗| 射洪县| 天长市| 菏泽市| 县级市| 石景山区| 开原市| 高邮市| 鄂托克前旗| 黑河市| 崇文区| 和硕县| 夹江县| 衢州市| 潞城市| 汉阴县| 霍山县| 井陉县| 广安市| 乌拉特前旗| 张家川| 普定县| 阳泉市| 牡丹江市| 宜章县| 健康| 龙游县|