Reverse-OneHotEncoding для массива - PullRequest
0 голосов
/ 11 мая 2019

Я использовал LabelEncoder и OneHotEncoder для преобразования моих категориальных данных в числовые, но, поскольку я довольно новичок в машинном обучении, я сделал некоторые вещи, которые не следовало бы делать с OneHotEncoder. Поэтому я хочу изменить то, что я сделал с OneHotEncoder.

Я провел поиск в Интернете и попробовал pd.get_dummies(), но, когда OneHotEncoder изменил мои данные на 9-мерные, я получил

Исключение: данные должны быть одномерными

ошибка, поэтому она не работает.

Я также попытался применить для декодирования столбцов в соответствии с моим поиском с кодом выглядит следующим образом.

X_level = pd.DataFrame({'1':[1,0,0,0,0,0,0,0,0],'2':[0,1,0,0,0,0,0,0,0],'3':[0,0,1,0,0,0,0,0,0],'4':[0,0,0,1,0,0,0,0,0],'5':[0,0,0,0,1,0,0,0,0],'6':[0,0,0,0,0,1,0,0,0],'7':[0,0,0,0,0,0,1,0,0],'8':[0,0,0,0,0,0,0,1,0],'9':[0,0,0,0,0,0,0,0,1]})
def get_X_level(row):
    for c in X_level.columns:
        if row[c]==1:
            return c
X_level.apply(get_X_level, axis=1)

Даже если я получил

0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
8    9
dtype: object

я хочу, чтобы это было в моем массиве, а не в моем. Так что это не поможет мне и с моей проблемой.

Я хочу, чтобы этот результат был в моем X_level массиве, а не в моем Out

1 Ответ

0 голосов
/ 12 мая 2019
X_level = pd.DataFrame({'1':[1,2,3,4,5,6,7,8,9]})
def get_X_level(row):
    for c in X_level.columns:
        if row [c]==1:
            return c

Этот код помог мне с моей проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...