Я разрабатываю инструмент, который автоматически обрабатывает данные в формате pandas.DataFrame. Во время этого этапа предварительной обработки я хочу по-разному рассматривать непрерывные и категориальные данные. В частности, я хочу иметь возможность применять, например, OneHotEncoder только к категориальным данным.
Теперь предположим, что нам предоставлен pandas.DataFrame и нет никакой другой информации о данных в DataFrame. Что такое хорошая эвристика, чтобы определить, является ли столбец в pandas.DataFrame категоричным?
Мои первоначальные мысли:
1) Если в столбце есть строки (например, тип данных столбца равен object
), то столбец, скорее всего, содержит категориальные данные
2) Если какой-то процент значений в столбце уникален (например, >= 20%), то столбец, скорее всего, содержит непрерывные данные
Я нашел, что 1)
работает нормально, но 2)
не очень хорошо работает. Мне нужна лучшая эвристика. Как бы вы решили эту проблему?
Изменить: Кто-то попросил объяснить, почему 2)
не работает. Были некоторые примеры тестов, в которых у нас все еще были непрерывные значения в столбце, но в столбце было не так много уникальных значений. Эвристика в 2)
явно не удалась в этом случае. Были также проблемы, когда у нас была категориальная колонка с множеством уникальных значений, например, имена пассажиров в наборе данных "Титаник". Проблема с неправильной классификацией такого же столбца.