對于缺失的數據:
我們對連續數值的特征做標準化(standardization):設該特征在整個數據集上的均值為 μ ,標準差為 σ 。那么,我們可以將該特征的每個值先減去 μ 再除以 σ 得到標準化后的每個特征值。對于缺失的特征值,我們將其替換成該特征的均值。
numeric_features = all_features.dtypes[all_features.dtypes != 'object'].index
all_features[numeric_features] = all_features[numeric_features].apply(lambda x: (x - x.mean()) / (x.std()))
# 標準化后,每個特征的均值變為0,所以可以直接用0來替換缺失值
all_features[numeric_features] = all_features[numeric_features].fillna(0)
一個標簽可能多種參數的情況:
接下來將離散數值轉成指示特征。舉個例子,假設特征MSZoning里面有兩個不同的離散值RL和RM,那么這一步轉換將去掉MSZoning特征,并新加兩個特征MSZoning_RL和MSZoning_RM,其值為0或1。如果一個樣本原來在MSZoning里的值為RL,那么有MSZoning_RL=1且MSZoning_RM=0。
# dummy_na=True將缺失值也當作合法的特征值并為其創建指示特征
all_features = pd.get_dummies(all_features, dummy_na=True)
all_features.shape