2017-09-08 100 views
0

讓我們假設我有一個分類數據列「紅」「綠」「藍」和空單元格替換缺失值在分類數據

red 
green 
red 
blue 
NaN 

我敢肯定,NaN的屬於紅,綠,藍,我應該用顏色的平均值替換NaN還是假設太強?這將是

col1 | col2 | col3 
    1  0  0 
    0  1  0 
    1  0  0 
    0  0  1 
0.5 0.25 0.25 

甚至縮放最後一行,但保持比例,所以這些值有較小的影響?通常最佳做法是什麼?

0.25 0.125 0.125 

回答

0

這取決於你想要對數據做什麼。 這些顏色的平均值對您的目的有用嗎? 您正在創建一個新的可能的值,這可能不是想要的。特別是因爲你正在談論分類數據,而且你正在處理它,就好像它是數字數據一樣。

在機器學習中,您將用關於目標屬性的最常見分類值(您想要預測的內容)替換缺失的值。

示例:您想通過查看他們的汽車預測一個人是男性還是女性,並且顏色特徵有一些缺失值。如果男性(女性)車手的大部分車輛都是藍色(紅色),則可以使用該值填寫男性(女性)車手缺少的車輛。

+0

謝謝您的回答。基本上我沒有具體的目標,這是一個崗位理學碩士課程的問題。我有一個數據集,並且必須解釋在這種情況下哪個是最好的方法 – disable0

+0

如果沒有特定的目標,我根本不會改變數據集。可能有一個很好的理由,爲什麼缺少某些值。所以你最終會通過改變它從數據中提取信息。 保持汽車的榜樣:如果某人不擁有汽車,該怎麼辦?當然,它沒有顏色導致缺失值。用一些價值取代它會導致錯誤的結果(這裏:假設傢伙有車)。 缺少值並不一定意味着缺少信息。 – lnathan

1

處理缺失數據的最簡單策略是刪除包含缺失值的記錄。

scikit-learn庫提供了可用於替換缺失值的Imputer()預處理類。由於它是分類數據,因此不建議使用均值作爲替換值。您可以使用

from sklearn.preprocessing import Imputer 
imp = Imputer(missing_values='NaN', strategy='most_frequent', axis=0) 

Imputer類直接在NumPy數組上而不是DataFrame上運行。

最後但並非最不重要的是,並非所有ML算法都不能處理缺失值。 ML的不同實現也不同。

+0

感謝您的建議Lan – disable0

0

除了Lan最常用的答案之外,您可以使用基於矩陣分解的東西。例如,有一種Generalized Low Rank Models的變體可以推算這樣的數據,正如概率矩陣分解用於估算連續數據一樣。

GLRMs can be used from H2O它爲Python和R提供綁定。

+0

從來沒有聽說過,感謝您的鏈接 – disable0