本節書摘來自華章計算機《r語言資料挖掘:實用項目解析》一書中的第1章,第1.13節,作者[印度]普拉迪帕塔·米什拉(pradeepta mishra),譯 黃芸,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
缺失值處理在标準資料挖掘場景中是一個重要的任務。在r語言中,缺失值顯示為na。na既不是字元串也不是數值型變量,它們被當作缺失值的辨別。在将資料集導入r語言平台之後,必須檢查所有變量,看是否存在缺失值——可使用is.na()函數。示例如下:
在上面的代碼中,對象x是一個數值型向量,其中包含了一些na值。is.na()可用于驗證是否存在缺失值,如存在,則輸出結果為true。如果在存在na值的情況下做計算,最終會出錯或者無結果。我們可以通過修改na值來替換資料集,或者可以在執行計算時移除那些na值。如上面的代碼所示,在計算對象x的平均值時通過na.rm=true移除na值。
可以使用na.omit()删除資料集中的缺失值。即使資料集隻缺失了一個變量,它也會删除那一整行。缺失值的處理方法有很多種:
平均值替換:對于資料向量中的缺失值,可以用該向量的平均值或中位數替代(不包括na值)。
局部平均法:取缺失值的局部平均值,通過3或5個周期移動取平均,即取3個周期的缺失資料的平均值作為先驗值,根據後驗值可确定缺失值應該是多少。
分隔保留:有時替換法無法完成,客戶也許會有意将缺失值分隔保留下來,進而隔離地考慮缺失行為。
基于模型:有一些基于模型的缺失值替換法,例如基于回歸模型預測缺失值的方法。
聚類法:可使用和回歸預測相類似的方法來替換缺失值,可以采用k均值聚類法替換資料集中的缺失值。