как использовать порядковый кодировщик или хотэнкодер для чисел, которые являются строками - PullRequest
0 голосов
/ 12 июля 2020

У меня есть набор данных со столбцом, который содержит числа в виде строк, таких как «один», «три», «пять», «пять» и др. c. Я хочу использовать порядковый кодировщик: один будет 0, два - 1, три - 3 и так далее. Как это сделать? Также в HotEncoder у меня есть разреженная опция, а в порядковом кодировщике у меня нет этой опции. Нужно ли мне делать здесь разреженное?

мой код:

#independent variables-Matrix
X = df.iloc[:, :-1].values 
#dependent variables vectors
Y = df.iloc[:, -1].values 
from sklearn.preprocessing import LabelEncoder, OneHotEncoder, OrdinalEncoder
Encoder =  OrdinalEncoder()
Z2= Encoder.fit_transform(X[:, [17]])
#X = np.hstack(( [![Z][1]][1]2, X[:,:17] , X[:,18:])).astype('float')
#handling the dummy variable trap
#X = X[:, 1:]

1 Ответ

1 голос
/ 12 июля 2020

В вашем случае я буду использовать функцию вместо использования Sklearn.

def label_encoder(column):
values = ['one', 'two', 'three', 'four', 'five'] 
new_row = []
for row in column:
    for i, ii in enumerate(values):
        if row == ii:
            new_row.append(i)
        else:
            continue
return new_row

или вы можете использовать понимание списка

def label_encoder(column):
values = ['one', 'two', 'three', 'four', 'five'] 
new_row = [i for row in column for (i, ii) in enumerate(values) if row==ii]
return new_row

Эти функции преобразуют массив ['one', 'one', 'two', ...] на [1, 1, 2, ...]

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