Bonjour, j'ai une trame de données avec de grandes valeurs catégorielles sur 1600 catégories. Est-ce que je peux trouver des alternatives pour ne pas avoir plus de 1600 colonnes.
J'ai trouvé ce lien intéressant ci-dessous http://amunategui.github.io/feature-hashing/#sourcecode
Mais ils se convertissent en classe / objet dont je ne veux pas. Je veux ma sortie finale en tant que trame de données afin de pouvoir tester avec différents modèles d'apprentissage automatique? ou existe-t-il un moyen d'utiliser la matrice générée pour former les autres modèles d'apprentissage automatique autres que la régression logistique ou XGBoost?
Existe-t-il de toute façon que je peux implémenter?
Réponses:
Une option consiste à mapper des valeurs rares à «autre». Cela se fait généralement par exemple dans le traitement du langage naturel - l'intuition étant que les étiquettes très rares n'ont pas beaucoup de puissance statistique.
J'ai également vu des gens mapper des valeurs catégorielles 1-chaud à des vecteurs de dimension inférieure, où chaque vecteur 1-chaud est représenté à nouveau comme un tracé à partir d'une gaussienne multivariée. Voir par exemple le document Deep Knowledge Tracing, qui dit que cette approche est motivée par l'idée de la détection compressée:
BARANIUK, R. Détection compressive. Magazine de traitement du signal IEEE 24, 4 (2007).
Plus précisément, ils cartographient chaque vecteur de longueur N à un vecteur plus court de longueur log2 (N). Je ne l'ai pas fait moi-même mais je pense que cela vaut la peine d'essayer.
la source
Vous pouvez lire les données et obtenir d'abord une liste de toutes les valeurs uniques de vos variables catégorielles. Ensuite, vous pouvez adapter un objet d'encodeur à chaud (comme le sklearn.preprocessing.CategoricalEncoder) sur votre liste de valeurs uniques.
Cette méthode peut également vous aider dans un cadre de test de train ou lorsque vous lisez vos données par blocs. J'ai créé un module python qui fait tout cela seul. Vous pouvez le trouver dans ce référentiel GitHub - dummyPy
Un court tutoriel à ce sujet - Comment One Hot Encode Variables catégorielles en Python?
la source
Reportez-vous à ce lien (cela est également lié à une caractéristique catégorielle ayant plusieurs valeurs uniques):
https://datascience.stackexchange.com/a/64021/67149
Pour l'intégration, vous pouvez vous référer au lien ci-dessous (non écrit par moi, mais digne d'être lu une fois): https://medium.com/@satnalikamayank12/on-learning-embeddings-for-categorical-data-using-keras-165ff2773fc9
la source
Vous pouvez effectuer un regroupement de valeurs similaires, de sorte que les valeurs (ou colonnes) qui contiennent la valeur la plus proche (ou qui a beaucoup de motifs similaires) puissent être remplacées par une valeur (ou colonne) et ainsi vos 1600 valeurs peuvent se résumer à 400 (ou même Moins).
Ex. pour des valeurs comme (nuage comme - Nimbus nuages, bruine, pluie légère, pluie, pluie forte peuvent être converties en (pluie légère, pluie, pluie forte).
la source