R語言處理缺失值不同方法對比

2021-10-07 14:27:10 字數 1593 閱讀 4534

需要用到dmwr2、dmwr、vim包,請提前安裝。本測試利用iris資料集,隨機定義缺失值。然後比較各個方法的誤差。

library(dmwr2)

library(dmwr)

library(vim)

set.seed(100)

newdata

#隨機定義缺失值

newdata[sample(1:nrow(newdata),20),"sepal.width"

]anyna(newdata)

sum(is.na(newdata))

#缺失資料視覺化

#聚類方法尋找與缺失樣本相似的10個相近的樣品的加權平均來填補缺失值

library(dmwr)

knnout

anyna(knnout)

#插補效果

#取出原資料集,缺失資料對應的變數值

original

actuals

]#取出插補後變數對應的值

predicteds

]#實際值和插補值比較,和實際值差距越小越好,選擇mape小的

regr.eval(actuals, predicteds)

regr.eval(actuals, predicteds)

mae mse rmse mape

0.2429 0.1080 0.3286 0.0767

#和多重差補法結果比較

library(mice)

library(randomforest)

miceout

"rf",maxit=100,seed=1234)

#得到插補資料

miceoutput

anyna(miceoutput)

predicteds2

]#實際值和插補值比較,和實際值差距越小越好,選擇mape小的

regr.eval(actuals, predicteds2)

mae mse rmse mape

0.4550 0.3275 0.5722 0.1524

#均值插補

newdata1

sum(is.na(newdata1))

newdata1$sepal.width[is.na(newdata1$sepal.width)

]predicted3

]regr.eval(actuals, predicted3)

mae mse rmse mape

0.3265 0.1614 0.4018 0.1080

###結果分析

比較三種方法的mape(平均絕對百分誤差)值,knn方法的誤差最小,效果最好。

R語言處理缺失值

在處理資料過程中,避免不了會產生一些缺失值,如未填寫資料或者編碼錯誤等原因,用na表示缺失值。在r語言中,is.na 函式可以判斷元素是否是缺失值,從而返回邏輯值 true false 所以該函式將會返回和元資料集一樣大小的資料集。在判斷缺失值的過程中,需要注意以下兩點 既然缺失值可能無處不在,那麼...

R語言矩陣 缺失值處理

缺失值處理一般包括三步 1.識別缺失資料 2.檢查導致資料缺失的原因 3.刪除包含缺失值的例項或用合理的數值代替 插補 缺失值。x is.na x 1 true is.nan x 1 false is.infinite x 1 false 函式complete.cases 可用來識別矩陣或資料框中沒...

R 缺失值處理

假設有一組資料集如下 data data.frame y c 1,2,3,na,5,6 x1 c 6,na,4,3,2,1 x2 c 1,3,6,9,12,na na 即表示缺失值。在r中輸入該資料。判斷缺失資料 is.na data 統計缺失值個數 sum is.na data 檢視每個樣本資料是...