iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 21
0

在上次的處理中尚未除去明顯的極端值,因此這次我們針對面積超過一定程度的資料進行刪除。

train = train[train.GrLivArea < 4500]
train.reset_index(drop=True, inplace=True)
train["SalePrice"] = np.log1p(train["SalePrice"])

為了將train與test的特徵一併處理,以避免之後預測狀況中產生錯誤,取出訓練集的答案之後,先將所有的資料都合併,方便我們同時處理train與test

y = train['SalePrice']
train_features = train.drop(['SalePrice'], axis=1)
test_features = test
features = pd.concat([train_features, test_features]).reset_index(drop=True)
features.shape # 觀察一下資料的大小

變數歸類

在最早的一篇文章中有提到,正確的變數型態才能夠正確的預測資料以及補值,因此需要先將資料正確的分類。

# 將原先是數值但應該為類別型變數的資料轉為字串
features['MSSubClass'] = features['MSSubClass'].apply(str)
features['YrSold'] = features['YrSold'].astype(str)
features['MoSold'] = features['MoSold'].astype(str)

# 將特定變數補上最適合的值
features['Functional'] = features['Functional'].fillna('Typ') 
features['Electrical'] = features['Electrical'].fillna("SBrkr") 
features['KitchenQual'] = features['KitchenQual'].fillna("TA") 
features["PoolQC"] = features["PoolQC"].fillna("None")

# 在特定變數中補上眾數
features['Exterior1st'] = features['Exterior1st'].fillna(features['Exterior1st'].mode()[0]) 
features['Exterior2nd'] = features['Exterior2nd'].fillna(features['Exterior2nd'].mode()[0])
features['SaleType'] = features['SaleType'].fillna(features['SaleType'].mode()[0])

上一篇
DAY[20]-Kaggle實戰-資料前處理與EDA
下一篇
DAY[22]-Kaggle實戰 補值與特徵新增(2)
系列文
Python機器學習介紹與實戰30

尚未有邦友留言

立即登入留言