[英]Encoding categorical features in Python with Encoders
有人可以告訴我下面這 3 個編碼器之間的區別,在哪些情況下我們使用它們,以及如何編寫代碼以簡單的方式使用它們(如果可能,使用 Python sklearn 進行編碼)
我很難在 sklearn 中了解它們背后的邏輯,因此我決定在這里提問。
感謝您的回復和幫助
快樂編碼
簡短的回答是——
例如 - 讓我們以sklearn
文檔中的例子為例 -
import numpy as np
import random
browser_choice = ["uses Firefox", "uses Chrome", "uses Safari", "uses Internet Explorer"]
x_values_train = np.array([[_] for _ in browser_choice])
x_values_test = np.array([["uses Chrome"], ["uses Safari"]])
因此,您的訓練數據集包含 4 個browser_choice
值,而您的測試數據集僅包含其中 2 個
序數編碼
ord_enc = OrdinalEncoder()
ord_enc.fit(x_values_train)
ord_enc.transform(x_values_test)
輸出
array([[0.],
[3.]])
您會注意到它已將值0
分配給"uses Chrome"
並將3
分配給"uses Safari"
。
一種熱編碼
ohe_enc = OneHotEncoder()
ohe_enc.fit(x_values_train)
pd.DataFrame(ohe_enc.transform(x_values_test).toarray(), columns=ohe_enc.categories_)
輸出
uses Chrome uses Firefox uses Internet Explorer uses Safari
0 1.0 0.0 0.0 0.0
1 0.0 0.0 0.0 1.0
pandas.DataFrame
並不是真正需要的,但它向您展示的是我們現在有 4 列 - “使用 Chrome”現在對應於"uses Chrome"
列中的1
,“使用 Safari”對應於1
"uses Safari"
列 - 這 4 列中只有一列的每一行都有1
Label Encoding可以被認為是 y 變量的 Ordinal Encoding,我在這里不做解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.