Как кодировать строковые данные в столбце, чтобы я мог применять методы машинного обучения для классификации, например, k-means? - PullRequest
1 голос
/ 23 марта 2020

У меня есть строковые переменные (Range [VarName]) в столбце с соответствующим идентификатором (Range [kksId]). Мне нужно создать алгоритм, который будет классифицировать новые переменные по существующему идентификатору или, если это невозможно, поместить их отдельно в класс N / A.

enter image description here

Как кодировать строковые данные в столбце, чтобы я мог применять методы машинного обучения для классификации, например, k-means?

1 Ответ

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

Как правило, поскольку ваша переменная Range [kksId] является вашим целевым классом, вы сопоставляете каждую из этих строк с уникальным целым числом, вот пример того, как этого можно достичь в python:

import pandas as pd


def _categoricalToNumeric(dataset):
    categoric_id_mapping = {}
    curr_id_to_assign = 0
    for row in dataset.index:
        categorical_value = dataset.loc[row]
        if categorical_value in categoric_id_mapping:
            dataset.loc[row] = categoric_id_mapping[categorical_value]
        else:
            categoric_id_mapping[categorical_value] = curr_id_to_assign
            dataset.loc[row] = curr_id_to_assign
            curr_id_to_assign += 1
    return dataset


df = pd.read_excel('DataModel.xlsx', index_col=0)
df['Range[kksId]'] = _categoricalToNumeric(df['Range[kksId]'])

Затем, что касается строкового объекта, в простом классификаторе они обычно отображаются в каждом символе в переменную. Пример:

R_r_DegPit1_In_St
R_r_DegPit1_In

становится:

x0  x1  x2  x3  x4  x5  x6  x7  x8  x9 x10 x11 x12 x13 x14 x15 x16
 R   _   r   _   D   e   g   P   i   t   1   _   I   n   _   S   t
 R   _   r   _   D   e   g   P   i   t   1   _   I   n  \0  \0  \0

Поскольку у вас будет столько переменных, сколько самой длинной строки в вашем наборе данных, для строк, которые не будут занимать все переменные, вы должны заполнить остальные переменные со значением, указывающим пустой символ. Вам также следует изменить значения символов на цифру c, однако важно не сбрасывать счетчик цифр c на основе каждого столбца. Результат может быть примерно таким:

x0  x1  x2  x3  x4  x5  x6  x7  x8  x9 x10 x11 x12  x13 x14 x15 x16
 3   1   4   1   5  10  11   6  12  13   2   1   7   14   1   8   9
 3   1   4   1   5  10  11   6  12  13   2   1   7   14   0   0   0

Имейте в виду, что более продвинутые методы ML / DL обрабатывают свои строки по-разному.

...