獨熱編碼OneHotEncoder簡介

2022-08-18 17:21:09 字數 970 閱讀 3073

在分類和聚類運算中我們經常計算兩個個體之間的距離,對於連續的數字(numric)這一點不成問題,但是對於名詞性(norminal)的類別,計算距離很難。即使將類別與數字對應,例如與[0,1,2]對應,我們也不能認為a與b,b與c距離為1,而a與c距離為2。獨熱編碼正是為了處理這種距離的度量,該方法認為每個類別之間的距離是一樣的。該方法將類別與向量對應,例如分別與[1,0,0],[0,1,0],[0,0,1]對應,注意現在各個類別之間的歐式距離是相同的。

現在我們說明onehotencoder函式的使用

1 data=np.array([[1,0,3.25],

2 [0,0,5.2],

3 [2,1,3.6]])

4 enc=onehotencoder(categorical_features=np.array([0,1]),n_values=[3,2])

5enc.fit(data)

6 data=enc.transform(data).toarray()

7print(data)

執行結果為

[[ 0.    1.    0.    1.    0.    3.25]

[ 1. 0. 0. 1. 0. 5.2 ]

[ 0. 0. 1. 0. 1. 3.6 ]]

categorical_features是需要獨熱編碼的列索引,n_values是對應categorical_features中各列下類別的數目,也就是原來的列拓展出新的列數。注意這裡兩個值可以不指定,直接使用fit_transform函式也可以,程式將統計各列中類別的多少。但是只對整數有效,對浮點數會轉換為整數之後再統計,也就是對於3.5和3.6預設都是3,也就是同一類。如果指定了這兩個引數,就要對未轉換的資料提出要求,各列必須是以來編碼,而不能以這種隨意的方式來編碼。否則會出現陣列越界的錯誤

One Hot encoder獨熱編碼

ref 1 什麼是獨熱碼 獨熱碼,在英文文獻中稱做 one hot code,直觀來說就是有多少個狀態就有多少位元,而且只有乙個位元為1,其他全為0的一種碼制。在機器學習中對於離散型的分型別的資料,需要對其進行數位化比如說性別這一屬性,只能有男性或者女性或者其他這三種值,如何對這三個值進行數位化表達...

獨熱編碼函式

想用自己的資料進行獨熱編碼,一開始沒用官方的程式。from sklearn import preprocessing enc preprocessing.onehotencoder 想用這個函式的可以參考博主 我找的是github裡的乙個程式 可以參考下。貼上 def one hot y n cla...

獨熱編碼 One Hot Eocode

假設現在我們要對5張手寫數字進行分類,這些數字的標籤labels的範圍是0 9,形成 5,的行向量,為 5,4,3,8,7 labels 5,4,3,8,7 num classes 10 batch size tf.size labels labels表示的標籤,5張有5個標籤。batch size...