У меня есть фрейм данных в Python, где мне нужно найти все категориальные переменные. Проверка типа столбца не всегда работает, потому что int
тип также может быть категоричным.
Поэтому я ищу помощь в поиске правильного метода проверки гипотез, чтобы определить, является ли столбец категоричным или нет.
Я пробовал ниже критерия хи-квадрат, но я не уверен, что это достаточно хорошо
import numpy as np
data = np.random.randint(0,5,100)
import scipy.stats as ss
ss.chisquare(data)
Пожалуйста, порекомендуйте.
Ответы:
Краткий ответ: вы не можете.
Не существует статистического теста, который бы указывал, является ли предиктор, содержащий целые числа от 1 до 10, числовым предиктором (например, число детей) или кодирует десять различных категорий. (Если предиктор содержит отрицательные числа, или наименьшее число больше единицы, или он пропускает целые числа, это может свидетельствовать о его категориальной кодировке - или это может означать, что аналитик использовал нестандартную кодировку.)
Единственный способ убедиться в этом - использовать опыт предметной области или кодовую книгу набора данных (которая должна существовать всегда).
источник
Какие бы критерии или правила вы ни использовали для работы с вашим набором данных, мы приветствуем вас, но мы не можем видеть ваши данные. В любом случае проблема, как правило, лучше решена, и вообще без ссылки на какое-либо конкретное программное обеспечение.
Это хуже, чем ты думаешь, даже если ты думаешь, что это хуже, чем ты думаешь.
Ответ @Stephan Kolassa уже имеет одно ключевое значение. Маленькие целые числа могут означать количество, а не категории: 3, означающее 3 машины или кошки, не совпадает с 3, что означает «человек владеет автомобилем» или «человек принадлежит кошке».
Десятичные точки могут скрываться в категориальных переменных как часть кодированных классификаций, например, отраслей или заболеваний.
В строгом смысле измерения могут быть просто целыми числами по соглашению, например, рост людей может быть представлен как целое число см или дюймы, а кровяное давление - как целое число мм рт.
Количество отличных (лучший термин, чем «уникальный», который все еще имеет первичное значение встречается только один раз) значений также не является хорошим ориентиром. Число людей разной высоты, возможных в умеренных выборках, вероятно, намного меньше, чем количество различных религиозных принадлежностей или этнического происхождения.
источник
Что ж, я думаю, что это даже хуже, чем предполагают другие ответы: данные не являются категориальными или числовыми подвидом æternatis - аналитик определяет уровень измерения как ответ на конкретный вопрос в конкретном случае. Смотрите ответ Glen_b здесь .
Это имеет практическое значение, чтобы понять это. Например, для дерева классификации различие между предикторами отношения, интервала и порядкового уровня не имеет значения: единственное различие, которое имеет значение, это различие между порядковыми и номинальными предикторами. Ограничение алгоритма разделения предиктора в точке вдоль линии, отделяющей более высокие и более низкие значения, может оказать существенное влияние на его прогностическую эффективность - хорошо это или плохо, в зависимости от гладкости (предположительно порядкового) отношения предиктора к ответу & размер набора данных. Нет разумного способа принять решение, основанное исключительно на размышлениях о том, как переменная предиктора представляет реальность, независимо от того, какой анализ вы собираетесь предпринять, не говоря уже о том, какие значения вы нашли в выборке.
источник
Это открытый вопрос исследования. Смотрите, например, работу Valera et al. ( бумага ) или расширения (например, один от Dhir et al. - бумага ).
Редактировать:
(Из бумаги Валеры.)
Поэтому, когда мы говорим, что это «открытый вопрос» (как ни странно, цитируя себя), мы имеем в виду, что в настоящее время не существует хороших автоматических методов для определения типа данных при конечной выборке. Если бы у вас был бесконечный образец, это было бы легко, но поскольку это невозможно, нам нужно вернуться к другим средствам.
источник