LabelEncoder可以擷取特徵值並刪除重複的特徵值,標籤藉由LabelEncoder產生的編碼值介於0和n_classes-1之間。以下是使用流程
(i) 呼叫LabelEncoder模組:
from sklearn.preprocessing import LabelEncoder
(ii) 複製一個LabelEncoder物件給label_encoder
label_encoder = LabelEncoder()
(iii) 呼叫fit來開始擷取特徵值
label_encoder.fit(["NTU", "NTHU", "NTU", "NCTU"])
(iv) 套用LabelEncoder物件的其他method
label_encoder.classes_:為每個類別保留標籤
label_encoder.transform:將標籤轉換為標準化化編碼
label_encoder.inverse_transform:將標籤轉換回原始編碼
參考
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html
利用fit時,引數可以為list、numpy、pandas等,但注意它們的形狀必須是一維。
如果pandas的DataFrame是二維的話,帶入fit時要另外做處理。下面另外使用numpy的np.unique函式去形成一維陣列來刪除重複特徵值。
2. OneHotEncoder
將特徵編碼為one-hot數值陣列。
輸入到此變換器應該為整數或字符串的陣列,表示分類(離散)特徵所採用的值。 使用one-hot(也稱為“一個K”或“ dummy”)將為每個類別創建一個二進制column,並返回稀疏矩陣或密集陣列。饋送分類數據需要這種編碼到許多scikit-learn估計器,特別是線性模型和帶有標準內核的SVM。以下是使用流程
(i) 呼叫OneHotEncoder模組:
from sklearn.preprocessing import OneHotEncoder
(ii) 複製一個OneHotEncoder物件給enc
enc = OneHotEncoder(handle_unknown='ignore')
(iii) 呼叫fit來開始擷取特徵值
enc.fit([['NTU', 1], ['NTHU', 3], ['NTHU', 2]])
(iv) 套用OneHotEncoder物件的其他method
enc.categories_:每個特徵的類別
enc.transform:然後轉換引數為OneHotEncoder
enc.inverse_transform:將後面的數據轉換為原始表示
enc.get_feature_names:返回輸出特徵的特徵名稱
參考
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html#sklearn.preprocessing.OneHotEncoder
沒有留言:
張貼留言