數(shù)據(jù)預(yù)處理之非數(shù)值型數(shù)據(jù)處理

諸如sklearn庫,只能對數(shù)值型數(shù)據(jù)進(jìn)行訓(xùn)練分析,我們要把非數(shù)值型數(shù)據(jù)轉(zhuǎn)換成數(shù)值型,在這里介紹幾種方法,和大家一起學(xué)習(xí)。


實(shí)驗(yàn)數(shù)據(jù)

1. one-hot encode(獨(dú)熱編碼)

適用于屬性值域較小的特征,如 gender = {‘male’, ‘female’} ,它將添加2個新的列:female,male(之所以是2,因?yàn)閟ex特征只有兩種取值。),若是女性,則兩個新列取(1,0),反之為(0,1)。類似于寄存器引腳的有效電平,或者網(wǎng)絡(luò)編程中select函數(shù)的fd_set參數(shù)變量

以這個例子:

dummy_df  = pd.get_dummies(df.gender)
dummy_df = dummy_df.rename(columns= lambda x: 'gender_'+str(x) )
df = pd.concat([df, dummy_df], axis=1)
Snip20180902_21.png

2. 使用map函數(shù)

pandas中, Series有map()函數(shù),可以用它來實(shí)現(xiàn)少量的映射

# create mapping rule
mapping_size = {'S':1, 'M':2, 'L':3}

# mapping
df['size'] = df['size'].map(mapping_size)
Snip20180902_23.png

3. factorizing 因子化

factorize函數(shù)把相同字符串映射為同一數(shù)字

pd.factorize(df.gender)
Snip20180902_27.png

結(jié)果返回一個元祖,發(fā)現(xiàn)第一個數(shù)組跟上圖的gender_female列一致。我試著又添加了一種性別,再次調(diào)用后:

Snip20180902_28.png

新性別被映射為2 ,說明映射后的值域是從0開始依次遞增的


關(guān)于獨(dú)熱編碼的具體介紹,大家可以看 OneHotEncoder獨(dú)熱編碼和 LabelEncoder標(biāo)簽編碼.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容