Як статистично довести, чи стовпець має категоричні дані чи не використовує Python
10
У мене є фрейм даних в python, де мені потрібно знайти всі категоричні змінні. Перевірка типу стовпця не завжди працює, тому що intтип може бути також категоричним.
Тож я шукаю допомоги у пошуку правильного методу тестування гіпотез, щоб визначити, категорія категорія чи ні.
Я пробував нижче тесту чи-квадрата, але не впевнений, чи достатньо це
import numpy as np
data = np.random.randint(0,5,100)import scipy.stats as ss
ss.chisquare(data)
Чи можете ви уточнити, чи правильно я зрозумів, що ви хочете розрізняти int, що використовується як порядкова змінна, і використовується як довільне категоричне кодування? У мене немає відповіді, але це може допомогти іншим читачам зрозуміти, що ви хочете. Інтуїтивно не думаю, що Chi2 міг би надійно виконати роботу.
Так, ти правий. За винятком моєї уваги не на типі змінної, а на даних, які вона несе. Тож у прикладі коду, яким я поділився, результат повинен бути таким, що це категорична змінна, оскільки вона має лише 5 унікальних значень.
Незважаючи на те, що інші правильно вказали, що цього не можна зробити, це все-таки створить цікаву проблему машинного навчання. Безсумнівно, існують проблемні сфери, в яких можна зробити досить точні прогнози.
Немає статистичного тесту, який би сказав вам, чи є предиктор, який містить цілі числа від 1 до 10, чисельним предиктором (наприклад, кількість дітей) або кодує десять різних категорій. (Якщо предиктор містить негативні числа, або найменше число більше одиниці, або воно пропускає цілі числа, це може заперечити його категоричне кодування - або це може просто означати, що аналітик використовував нестандартне кодування.)
Єдиний спосіб бути впевненим - використовувати експертизу домену або кодову книгу набору даних (яка завжди повинна існувати).
За якими б критеріями чи правилами не працювали для вашого набору даних, ми раді вам, але ми не можемо побачити ваші дані. У будь-якому випадку проблему краще викладати загалом і без посилання на якесь конкретне програмне забезпечення.
Це гірше, ніж ви думаєте, навіть якщо ви думаєте, що це гірше, ніж ви думаєте.
Відповідь @Stephan Kolassa вже робить один ключовий момент. Невеликі цілі числа можуть означати кількість, а не категорії: 3, тобто 3 машини чи коти, не те саме, що 3, тобто "людина володіє машиною" або "людина належить кішці".
Десяткові бали можуть ховатися в категоричних змінних, як частина кодованих класифікацій, наприклад, галузей промисловості чи захворювань.
Суворий сенс вимірювань може бути просто цілими за умовами, наприклад, про висоту людей можна просто повідомити як цілі сантиметри або дюйми, артеріальний тиск як ціле число мм рт.
Кількість чітких (кращих термінів, ніж "унікальний", які все ще мають основне значення зустрічатися лише один раз), також не є хорошим орієнтиром. Кількість різних висот людей у помірних вибірках, можливо, набагато менша за кількість різних релігійних приналежностей чи етнічного походження.
+1. Це хороший перелік речей, які слід врахувати. Ви повинні поєднувати це з знаннями вашого домену про набір даних (та будь-яку документацію) для автоматизації виявлення категоричних змінних.
@Anna Я б сказав, що автоматичне виявлення не повинно виконуватися, і саме це може привести вас до проблем, як описано в цій темі. Знання та документація про домен повинні легко ідентифікувати багатотомні змінні серед інших змінних, так що вам не доведеться здогадуватися.
Добре, я думаю, що це навіть гірше, ніж інші відповіді. Дані не є категоричними чи числовими підпорядками æternatis - "рівень вимірювання" - це те, що передбачає аналітик, щоб відповісти на певне питання з певного випадку. Дивіться відповідь Glen_b тут .
Це важливо для розуміння. Наприклад, у класифікаційному дереві відмінність між прогнозним співвідношенням, інтервалом та порядковим рівнем не має жодного наслідку: єдине, що має значення, полягає в тому, що між порядковими та номінальними предикторами. Обмеження алгоритму розбиття предиктора в точці вздовж лінії, відокремлення вищих від нижчих значень, може мати істотний вплив на його прогнозовану ефективність - для хороших чи поганих, залежно від плавності відношення (ймовірно порядкового) прогноктора до відповіді & розмір набору даних. Немає розумного способу прийняти рішення, засноване виключно на роздумі про те, як змінна прогнозування представляє реальність незалежно від аналізу, який ви збираєтесь провести, не кажучи вже про те, які значення ви знайшли у вибірці.
Це відкрите дослідницьке питання. Дивіться, наприклад, роботу Валера та ін. ( папір ) або розширення (наприклад, Dhir et al. - папір ).
Редагувати:
Поширеною практикою в статистиці та машинному навчанні є припущення, що статистичні типи даних (наприклад, порядкові, категоріальні або реальні значення) змінних, і, як правило, також відома модель ймовірності. Однак із збільшенням доступності даних у реальному світі це припущення стає занадто обмежуючим. Дані часто бувають неоднорідними, складними та неправильно або неповно задокументовані. Дивно, але, незважаючи на їх практичне значення, все ще бракує інструментів для автоматичного виявлення статистичних типів змін, а також відповідних імовірнісних (шумових) моделей змінних у наборі даних.
(З паперу Валера.)
Отже, коли ми говоримо, що це "відкрите питання" (як це не дивно, коли я цитую себе), ми маємо на увазі сказати, що в даний час не існує хороших автоматичних методів для виведення типу даних, що даються в кінцевій вибірці. Якби у вас був нескінченний зразок, це було б легко, але оскільки це неможливо, нам потрібно повернутися до інших засобів.
Не могли б ви сказати, на що ви маєте на увазі "відкрите дослідницьке запитання"? Спробуйте також пояснити, як ваша відповідь не (або не відповідає) іншим відповідям у цій темі.
Дякую. Мені здалося, переглядаючи документ Валера, він висловлює набагато сильніші твердження: а саме, мається на увазі використовувати метод здогадки про різні типи змін, а саме для розмежування категоричних та порядкових даних. Я не вивчав метод, але припускаю, що він повинен базуватися (принаймні частково) на перегляді взаємозв'язків між такими змінними та іншими змінними, з якими вони вважаються пов'язаними. Я не можу зрозуміти, яким чином "нескінченний зразок" (що б це не було) може мати користь: чи можете ви пояснити, як це зробить проблему "легкою"?
Це насправді дуже надійний метод, і я сам його детально вивчив (що робить мене трохи упередженим) але вони ідея дуже розумна. Ми припускаємо, що кожен тип стовпця може бути описаний як суміш типів (як модель суміші), і тоді ми прагнемо знайти тип з найбільшою вагою, а потім називаємо кореспондент 'type' реальним типом змінної. Що стосується висновку про тип, це дуже розумний і найкращий автоматичний метод (про який я знаю). Якщо інші знають про інших, будь ласка, поділіться!