簡體   English   中英

SKLearn:標簽編碼分類值的虛擬變量

[英]SKLearn: Dummy Variables for Label Encoded Categorical Values

我首先從 excel 數據集中設置我的 X 並將其轉換為矩陣值:

X = dataset.iloc[:, 3:13].values

所以我有兩列用於 XI 需要標記編碼(國家和性別)。 一共有三個國家,西班牙、法國和德國,而且只有兩種性別。 我對它們進行標簽編碼:

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X_1 = LabelEncoder()
X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1]) # the three countries
labelencoder_X_2 = LabelEncoder()
X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2])

好的,現在我需要為這三個國家創建虛擬變量,因為它們不存在一個值高於另一個值的層次關系。 但是,新代碼不起作用:

onehotencoder = OneHotEncoder(categorical_features = [1])
X = onehotencoder.fit_transform(X).toarray()
X = X[:, 1:]

此代碼不起作用。 我讀到帶有 Onehotencoding 的 ColumnTransformer 現在用於創建虛擬變量,但我很難弄清楚。 我確實導入了必要的包。 我試過這個,但它仍然不起作用:

columnTransformer = ColumnTransformer([('encoder', OneHotEncoder(), [1])], remainder='passthrough')
X = columnTransformer.fit_transform(X)

有人可以幫忙嗎? 謝謝。 我只是想在開始時對三個國家進行標簽編碼后進行熱編碼。

獲得假人的最簡單方法是使用 pandas get_dummies 函數。 在這里,您甚至不需要對數據進行標簽編碼。

df_country = pd.get_dummies(X[:, 1])
df_gender = pd.get_dummies(X[:, 2]

現在,您將獲得兩個數據幀,一個是根據國家/地區和性別列進行熱編碼。 您現在可以將其附加到數據框 X 並刪除原始的性別和國家/地區列。 X = pd.concat([X, df_country, df_gender], 軸 = 1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM