對類別Category資料編碼的幾種方法

2021-08-10 12:08:36 字數 1466 閱讀 4822

文中資料以titanic資料集為例

1、query the column

titanic_df['embarked'][titanic_df['embarked']=='s'] = 0

titanic_df['embarked'][titanic_df['embarked']=='q'] = 1

titanic_df['embarked'][titanic_df['embarked']=='c'] = 2

titanic_df['embarked']= titanic_df['embarked'].astype(np.int64)

2、map()

對於有大小意義的離散特徵,比如size:[x, xl, xxl],那麼就可以直接使用數值的對映

def

get_number

(c):

dic =

return dic[c]

4、labelencoder()

from sklearn.preprocessing import labelencoder

le = labelencoder()

titanic_df['embarked'] = le.fit_transform(list(titanic_df['embarked'])

test_df['embarked'] = le.fit_transform(list(test_df['embarked'])

如果要檢視類別與數值的對應關係,可以

le.classes_
5、pd.get_dummies()

titanic_df = pd.get_dummies(titanic_df, columns=['embarked'])
6、one-hot編碼

通常來說,特徵不都是連續的值而是由分類給出的。例如,乙個人可以具有如下特徵:

[「male」, 「female」]

[「from europe」, 「from us」, 「from asia」]

[「uses firefox」, 「uses chrome」, 「uses safari」, 「uses internet explorer」]

這樣的特徵可以被有效地整合在一起然後進行編碼,比如:

[「male」, 「from us」, 「uses internet explorer」] 可以用[0, 1, 3]表示

[「female」, 「from asia」, 「uses chrome」] 可以用[1, 2, 1]表示

但是,這樣的表示不能用於sklearn進行估計,因為離散(分類)特徵,將特徵值轉化成數字時往往是不連續的。onehotencoder函式通過one-of-k (k之一)和 one-hot(獨熱)編碼來解決這個問題。

參考:

資料編碼技術

資料編碼技術型別和方法 1.資料編碼型別 在計算機中資料是以離散的二進位制0 1位元序列方式表示的。計算機資料在傳輸過程中的資料編碼型別,主要取決於它採用的通訊通道所支援的資料通訊型別。根據資料通訊型別,網路中常用的通訊通道分為兩類 模擬通訊通道與數字通訊通道。相應的用於資料通訊的資料編碼方式也分為...

資料編碼方式

4類資料傳輸方式 1 模擬資料用模擬訊號傳輸 2 模擬資料用數碼訊號傳輸 3 數字資料用模擬訊號傳輸 4 數字資料用數碼訊號傳輸 除第 1 種外,都需要資料編碼 1 模擬資料用模擬訊號傳輸 例如傳統的 2 模擬資料用數碼訊號傳輸 例如數位化 訊號數位化的轉換過程採用脈衝編碼調製 pcm pcm技術以...

資料編碼問題

1.檢查程式設定過濾器配置 一般第一步可能會去看spring專案中的web.xml是否設定了字元過濾器 2 檢查tomcat 配置檔案 server.xml 3 檢查資料庫連線 4 檢查日誌,檢視是否資料本身亂碼 5 追溯建立資料庫時選擇編碼是否正確。6 檢查資料庫整體編碼情況 show varia...