網頁

2019年7月7日 星期日

sklearn.preprocessing:文本與序列預處理

1. LabelEncoder

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





沒有留言:

張貼留言