Kaggle知識點:缺失值處理方法

在進行數據挖掘的過程中,理解和清洗數據是最耗費時間的事情。你應該知道數據是如何產(chan) 生的,哪些特征對業(ye) 務有影響,隻有這樣你才能給出最好的數據結果。

在本文中,我們(men) 將介紹缺失值的產(chan) 生原因和缺失值具體(ti) 的處理方法。

問題1:為什麽有缺失值?

現實世界中的數據在大多數情況下都有很多缺失的數據。每個(ge) 值丟(diu) 失的原因可能不同。可能有數據丟(diu) 失或損壞,或者也可能有特定原因。

缺失值產生的原因

數據丟(diu) 失背後的一些可能原因(產(chan) 生過程、傳(chuan) 輸過程、存儲(chu) 過程):

  • 人們不會在數據收集調查中提供有關某些問題的信息。
  • 數據是從各種可用的過去記錄中積累的,而不是直接積累的。
  • 數據收集過程中的不準確也會導致數據丟失。

缺失值類型

數據丟(diu) 失的原因多種多樣,但整體(ti) 可以將它們(men) 分為(wei) 三個(ge) 主要組:完全隨機丟(diu) 失、隨機丟(diu) 失、不隨機丟(diu) 失。

完全隨機缺失 (MCAR)

  • 現象:缺失的數據不遵循任何特定模式,它們(men) 隻是隨機的。

  • 特點:不可能用其餘(yu) 的變量數據來預測這些值,數據的缺失與(yu) 其餘(yu) 變量無關(guan) 或獨立。

  • 案例:如在數據收集過程中,由於(yu) 粗心大意丟(diu) 失了特定樣本

隨機丟失 (MAR)

  • 現象:數據在特定子集中丟(diu) 失

  • 特點:可以借助其他功能來預測數據是否存在/不存在,無法自己預測丟(diu) 失的數據。

  • 案例:如在數據收集過程中,有一些默認選項,可以不做填寫(xie)

不隨機丟失 (NMAR)

  • 現象:確實的數據遵循某種模式,且與(yu) 數據樣本相關(guan) 。

  • 特點:刪除行/列、插補等常用方法將不起作用,缺失的數據與(yu) 字段相關(guan) 。

  • 案例:如在數據收集中,采集者根據字段來選擇填寫(xie) 某些字段。

問題2:如何分析缺失值?

在Pandas中可以很方便的使用isnull函數來計算是否包含缺失值。

missing_values=train.isnull().sum()

同時也可以使用missingno庫來查看缺失值的分布規律:

  • bar:統計每列缺失值的次數
  • matrix:統計缺失值和行數分布規律
  • heatmap:統計列缺失值的相關性
  • dendrogram:統計列確實的組合性

問題3:缺失值需要處理嗎?

處理缺失值可以從(cong) 兩(liang) 個(ge) 角度考慮:

  • 從數據角度:如果某列的缺失比例大於某一閾值(如大於90%),則可以考慮剔除列;類似的對行的角度也可以這樣操作。
  • 從模型角度:如果使用樹模型則不用考慮處理,其他模型則需要進行填充或者剔除。

問題4:缺失值如何填充?

使用值填充

使用特殊值填充是最簡單的填充方法,主要的優(you) 勢是速度,可能會(hui) 帶來一定的噪音。

  • 數值列:中位數、中位數、特殊值
  • 類別列:眾數、特殊值

最近鄰樣本填充

如果數據集的行按照日期維度進行組織,則可以考慮使用時序信息完成填充:

  • 向前填充
  • 向後填充
  • 前後填充

如果數據集的行沒有時序信息,使用KNN模型可以選擇最近鄰的樣本,然後從(cong) 樣本的維度完成填充。

使用模型預測

數據樣本各列之間存在聯係,此時可以從(cong) 列與(yu) 列的關(guan) 係完成缺失值填充。

  • 使用回歸/分類模型預測列:使用其他列作為特征,待填充列作為標簽;
  • 使用自編碼器預測缺失值:使用缺失數據作為輸入,完整數據作為標簽,完成自監督訓練。

【競賽報名/項目谘詢+微信:mollywei007】

上一篇

USACO各級別考點/難度是?有助大學申請USACO要達到哪個級別?

下一篇

2023年IEO經濟奧賽報名官網詳細操作步驟!

你也可能喜歡

  • 暫無相關文章!

評論已經被關(guan) 閉。

插入圖片
返回頂部