Как обрабатывать строковые данные в классификации ML - PullRequest
0 голосов
/ 02 февраля 2019

Здравствуйте, я новичок в машинном обучении, ранее я работал с некоторыми двоичными мл задачами, где данные были числовыми.Теперь я сталкиваюсь с проблемой, где я должен найти вероятность конкретной комбинации.Я не могу раскрыть набор данных или код в этой точке.Мои данные - это кадр из 10 столбцов.Я должен обучить свою модель на 8 столбцах и предсказать возможность последних 2 столбцов.То есть мои метки представляют собой комбинацию из последних 2 столбцов.С чем я сталкиваюсь, так это с тем, что значения столбцов не являются числовыми.Я перепробовал все, с чем сталкивался, но не могу найти подходящих средств для преобразования этого в числовые значения.Я пробовал LabelEncoder от sklearn, который работает с метками, но выдает ошибку памяти, если я использую его снова.Я попытался to_numeric от панд, который читает все значения как Nan.Значения находятся в форме '2be74fad-4d4'.Будем весьма благодарны за любые предложения по решению этой проблемы.

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Чтобы преобразовать категориальные данные в числовые, вы можете попробовать следующие подходы в sklearn:

  1. Кодировка меток
  2. Метка бинаризатор
  3. Кодировка OneHot

Теперь для решения вашей проблемы вы можете использовать LabelEncoder.Но тут есть подвох.В других моделях sklearn вы можете объявить его один раз, а затем использовать его для подгонки, а затем преобразовать в несколько столбцов.

В LabelEncoding необходимо fit_transform модель для одного столбца в данных поезда, а затемtransform тот же столбец в тестовых данных.Затем тот же процесс для следующего категориального столбца.

Вы можете перебрать список категориальных столбцов, чтобы упростить его.Рассмотрите фрагмент ниже:

cat_cols = ['Item_Identifier', 'Item_Fat_Content', 'Item_Type', 'Outlet_Identifier', 
         'Outlet_Size', 'Outlet_Location_Type', 'Outlet_Type', 'Item_Type_Combined']
enc = LabelEncoder()

for col in cat_cols:
    train[col] = train[col].astype('str')
    test[col] = test[col].astype('str')
    train[col] = enc.fit_transform(train[col])
    test[col] = enc.transform(test[col])
0 голосов
/ 02 февраля 2019

Вы можете создать словарь с отображением из строки в целое число.Пример можно найти здесь: введите описание ссылки здесь .Затем вы используете однокадровое кодирование или просто передаете целое число в нейронную сеть.Если символы имеют какое-то значение, вы также можете сделать это на основе символов вместо слов.Но это зависит от задачи.Если эта строка является уникальным идентификатором столбца или около того, просто не указывайте его и не передавайте его в вашу модель.

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