非數值型特徵如何進行編碼?

2021-08-20 12:52:11 字數 2045 閱讀 4140

1、如下圖,「age」「education」「marriage」「risk」是非數值型特徵,不可以直接訓練模型,需要進行編碼,把特徵轉換成數值型,然後進行訓練。

2、有很多種編碼方式,比如one-hot編碼(獨熱編碼),也可以對映有序特徵,對於分型別特徵,可以對類別進行編碼。

下圖用的就是對「age」「education」「marriage」「risk」對映有序特徵。

3、one-hot編碼

# one-hot編碼方法二:使用`pandas`的`get_dummies`函式實現

var = ["***", "education", "marriage","risk"]

multi_dummies = # 儲存三個 dataframe

credit_dummies = credit[["age","bill_1","bill_2","bill_3","bill_4","bill_5","bill_6"]]

for col in var:

dummies = pd.get_dummies(credit[col], prefix = col)

credit_dummies = pd.concat([credit_dummies,dummies],axis=1) # 將編碼結果與非編碼特徵水平拼接起來

總結:現在來了一批特徵 color  price  size classlabel 。其中有非數值型特徵,接下來我們該怎樣處理呢?

(一)size 特徵m  l  xl 這三個值是有大小差別的,編碼後最後能夠反映出大小關係,還有特徵反應順序關係的,比如小學,、初中、高中。最好用對映有序特徵方法編碼。

(二)classlabel標籤是屬於類別標籤,我們可以對類別進行編碼,和對映有序特徵差不多。

(三)對於color特徵,顏色值沒有大小之分,我們可以用one-hot encoding編碼方式進行編碼。

不同的模型對於非數值特徵的編碼要求有所不同。

(參考:《python機器學習》 )

如何進行特徵選擇

前言 理論部分 乙個典型的機器學習任務是通過樣本的特徵來 樣本所對應的值。特徵過多會導致模型過於複雜,從而導致過擬合 而特徵過少則會導致模型過於簡單,從而導致欠擬合。事實上,如果特徵數大於樣本數,那麼過擬合就不可避免。特徵數比較少的時候,我們需要增加特徵。增加特徵方法很多 依照經驗 利用已有演算法提...

如何進行base64編碼

如何進行base64編碼 base64 使用us ascii子集的65個字元,每個字元用6位表示 對於文字串,編碼過程如下。例如 men 先轉成us ascii值.m 十進位制 109 e 十進位制 101 n 十進位制 110 二進位制 m 01101101 e 01100101 n 011011...

資料建模 機器學習之如何進行特徵工程(上)

1 特徵選擇 當資料預處理完成後,我們需要選擇有意義的特徵輸入機器學習的演算法和模型進行訓練。通常來說,從兩個方面考慮來選擇特徵 特徵是否發散 如果乙個特徵不發散,例如方差接近於0,也就是說樣本在這個特徵上基本上沒有差異,這個特徵對於樣本的區分並沒有什麼用。根據特徵選擇的形式又可以將特徵選擇方法分為...