[英]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.