OneHotEncoding после LabelEncoding - PullRequest
0 голосов
/ 22 апреля 2020

В Sklearn, как я могу сделать OneHotEncoding после LabelEncoding в Sklearn.

То, что я сделал до сих пор, - это то, что я сопоставил все строковые особенности моего набора данных, вот так.

# Categorical boolean mask
categorical_feature_mask = X.dtypes==object
# filter categorical columns using mask and turn it into a list
categorical_cols = X.columns[categorical_feature_mask].tolist()

После этого я применил это к столбцам набора данных с индексацией, подобной такой:

X[categorical_cols] = X[categorical_cols].apply(lambda col: le.fit_transform(col))

Мои результаты были не очень хорошими, так что я хочу сделать, чтобы я хочу использовать ÒneHotEncoding, чтобы увидеть, улучшается ли производительность.

Это мой код:

ohe = OneHotEncoder(categorical_features = categorical_cols)
X[categorical_cols] = ohe.fit_transform(df).toarray()

Я пробовал разные подходы, но вот что я пытаюсь выполнить sh здесь используя технику OneHotEncoding для перезаписи функций.

1 Ответ

1 голос
/ 22 апреля 2020

OneHotEncoder напрямую поддерживает категориальные функции, поэтому нет необходимости использовать LabelEncoder перед его использованием. Также обратите внимание, что вы должны , а не использовать LabelEncoder для кодирования функций. Проверьте LabelEncoder для функций? для подробного объяснения этого. LabelEncoder имеет смысл только для фактической цели.

Поэтому выберите категориальные столбцы (здесь обычно используется df.select_dtypes) и поместите их в указанные столбцы. Вот набросок , как вы могли бы продолжить:

# OneHot encoding categorical columns
oh_cols = df.select_dtypes('object').columns
X_cat = df[oh_cols].to_numpy()
oh = OneHotEncoder()
one_hot_cols = oh.fit(X_cat)

Затем просто вызовите метод transform кодера. Если вы хотите восстановить фрейм данных (как подсказывает ваш код), * ​​1017 * выдаст вам имена категорий категориальных функций:

df_prepr = pd.DataFrame(one_hot_cols.transform(X_cat).toarray(),
                        columns=one_hot_cols.get_feature_names(input_features=oh_cols))
...