J'ai un bloc de données en python où j'ai besoin de trouver toutes les variables catégorielles. La vérification du type de la colonne ne fonctionne pas toujours car le int
type peut également être catégorique.
Je cherche donc de l'aide pour trouver la bonne méthode de test d'hypothèse pour identifier si une colonne est catégorique ou non.
J'essayais ci-dessous le test du chi carré mais je ne sais pas si c'est assez bon
import numpy as np
data = np.random.randint(0,5,100)
import scipy.stats as ss
ss.chisquare(data)
S'il vous plaît donnez votre avis.
Réponses:
Réponse courte: vous ne pouvez pas.
Il n'y a pas de test statistique qui vous dira si un prédicteur contenant les nombres entiers compris entre 1 et 10 est un prédicteur numérique (par exemple, le nombre d'enfants) ou s'il code dix catégories différentes. (Si le prédicteur contient des nombres négatifs, ou si le plus petit nombre est supérieur à un, ou s'il saute des entiers, cela pourrait plaider contre le fait qu'il s'agit d'un encodage catégorique - ou cela peut simplement signifier que l'analyste a utilisé un encodage non standard.)
La seule façon d'être sûr est de tirer parti de l'expertise du domaine ou du livre de codes de l'ensemble de données (qui devrait toujours exister).
la source
Quels que soient les critères - ou règles de base - qui fonctionnent pour votre jeu de données, vous êtes les bienvenus, mais nous ne pouvons pas voir vos données. Dans tous les cas, le problème est généralement mieux réglé et sans référence à un logiciel particulier.
C'est pire que vous ne le pensez, même si vous pensez que c'est pire que vous ne le pensez.
La réponse de @Stephan Kolassa soulève déjà un point clé. Les petits nombres entiers pourraient signifier des nombres plutôt que des catégories: 3, signifiant 3 voitures ou chats, n'est pas identique à 3, signifiant "personne possède une voiture" ou "personne appartient à un chat".
Des points décimaux pourraient se cacher dans des variables catégorielles, dans le cadre de classifications codées, par exemple d'industries ou de maladies.
Les mesures au sens strict pourraient simplement être des nombres entiers par convention, par exemple la taille des personnes peut simplement être indiquée en cm ou en pouces entiers, les pressions sanguines en mm entiers Hg.
Le nombre de valeurs distinctes (un meilleur terme que «unique», qui a toujours la signification principale de n'apparaître qu'une seule fois) n'est pas non plus un bon guide. Le nombre de tailles différentes de personnes possible dans des échantillons modérés est probablement bien inférieur au nombre de différentes appartenances religieuses ou origines ethniques.
la source
Eh bien, je pense que c'est encore pire que les autres réponses suggèrent: les données ne sont pas des sous-espèces æternatis catégoriques ou numériques - le "niveau de mesure" est quelque chose stipulé par l'analyste pour répondre à une question particulière à une occasion particulière. Voir la réponse de Glen_b ici .
Il est d'une importance pratique de comprendre cela. Par exemple, avec un arbre de classification, la distinction entre les prédicteurs de rapport, d'intervalle et de niveau ordinal est sans conséquence: la seule distinction qui importe est celle entre les prédicteurs ordinaux et nominaux. Contraindre l'algorithme pour diviser le prédicteur en un point le long d'une ligne, en séparant les valeurs supérieures des valeurs inférieures, peut avoir un effet significatif sur ses performances prédictives - pour le meilleur ou pour le pire, selon la fluidité de la relation du prédicteur (ordinairement putatif) avec la réponse & la taille de l'ensemble de données. Il n'y a aucun moyen raisonnable de prendre une décision basée uniquement sur la réflexion sur la façon dont la variable prédictive représente la réalité, quelle que soit l'analyse que vous êtes sur le point d'entreprendre, et encore moins sur les valeurs que vous avez trouvées qu'elle prend dans un échantillon.
la source
Il s'agit d'une question de recherche ouverte. Voir par exemple le travail de Valera et al. ( papier ) ou des extensions (par exemple celle de Dhir et al. - papier ).
Éditer:
(Tiré du journal Valera.)
Donc, quand nous disons qu'il s'agit d'une "question ouverte" (me citant assez curieusement), nous voulons dire qu'il n'existe actuellement aucune bonne méthode automatique pour déduire le type de données pour un échantillon fini. Si vous aviez un échantillon infini, ce serait facile, mais comme ce n'est pas possible, nous devons revenir à d'autres moyens.
la source