python數據預處理和特性選擇後列的映射
阿新 • • 發佈:2018-12-15
form med 標準化 學習 ont 矩陣 sim span 直接
我們在用python進行機器學習建模時,首先需要對數據進行預處理然後進行特征工程,在這些過程中,數據的格式可能會發生變化,前幾天我遇到過的問題就是:
對數據進行標準化、歸一化、方差過濾的時候數據都從DataFrame格式變為了array格式。
這樣數據的列名就會消失,且進行特征選擇之後列的數量也會發生改變,因此需要重新對列進行映射,為其加上列名並轉化為DataFrame的格式。一般情況下可以分為三種情況:
1、對數據進行缺失值填補、編碼(處理分類型變量)、二值化(處理連續型變量)一般都是按照列對數據進行處理,因此處理完之後,直接覆蓋原數據即可。
data.loc[:,"Age"]= SimpleImputer(strategy="median").fit_transform(data.loc[:,"Age"].values.reshape(-1,1))
2、對數據進行標準化、歸一化都是對整個特征矩陣進行處理,數據類型變為array,但是數據的列並沒有發生任何改變。直接將原始的列名重新映射至處理好的數據上。
X_train1 = min_max_scaler.fit_transform(X_train) X_train1=pd.DataFrame(X_train1) X_train1.columns = X_train.columns
3、在所有特征選擇方法,方差,SelectKBest+各種統計量(卡方過濾、F檢驗、互信息法),嵌入法和包裝法,都有接口get_support,該接口有屬性get_support(indices=False),參數為false的時候可以用來確定原特征矩陣中有哪些特征被選擇出來,返回布爾值True或者False,如果設定indices=True,就可以確定被選擇出來的特征在原特征矩陣中所在的位置的索引。
python數據預處理和特性選擇後列的映射