MinMaxScaler + DecisionTree классификатор с числовыми и категориальными данными - PullRequest
0 голосов
/ 31 октября 2019

Я хотел бы знать, как мне справиться со следующей ситуацией:

У меня есть набор данных, который мне нужно проанализировать. Он помечен как данные, и мне нужно выполнить над ним задачу классификации. Некоторые функции являются числовыми, а другие категориальными (неординарными), и моя проблема в том, что я не знаю, как я могу справиться с категориальными.

Перед классификацией я обычно применяю MinMaxScaler. Но я не могу сделать это в этом конкретном наборе данных из-за категорических особенностей.

Я читал о one-hot encoding, но я не понимаю, как применить его к моему случаю, потому что мой набор данных имеетнекоторые числовые функции и 10 категориальных функций, а также горячее кодирование генерируют больше столбцов в кадре данных, и я не знаю, как мне нужно подготовить результирующий кадр данных для отправки его в классификатор дерева решений.

Чтобы прояснить ситуацию, я использую следующий код:

y = df.class
X = df.drop(['class'] , axis=1)

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X = scaler.fit_transform(X)

# call DecisionTree classifier

Когда df имеет категорические особенности, я получаю следующую ошибку: TypeError: data type not understood,Итак, если я применяю one-hot encoding, я получаю фрейм данных со многими столбцами, и я не знаю, сможет ли классификатор SolutionTree понять реальную ситуацию с моими данными. Я имею в виду, как я могу выразить классификатору, что группа столбцов принадлежит определенной функции? Я неправильно понимаю всю ситуацию? Извините, если это запутанный вопрос, но я новичок, и я не совсем понял, как с этим справиться.

1 Ответ

0 голосов
/ 31 октября 2019

У меня недостаточно репутации, чтобы комментировать, но учтите, что классификаторы дерева решений не требуют масштабирования их входных данных. Поэтому, если вы используете классификатор дерева решений, просто используйте функции по мере их появления.

Если вы используете метод, требующий масштабирования объектов, то вам, вероятно, следует выполнить горячее кодирование и масштабирование объектовотдельно - см. этот ответ: https://stackoverflow.com/a/43798994/9988333

В качестве альтернативы, вы можете использовать метод, который обрабатывает категориальные переменные «из коробки», например, LGBM.

...