Je démarre un projet sur un jeu de données contenant plus de 5 000 valeurs uniques pour une catégorie. p>
Ma question est forte>, après avoir utilisé l'étiquette Encoder, pour "énumérer" les catégories, il est logique d'utiliser un refleer standard pour rendre les données un peu plus "gérables" pour mon modèle d'apprentissage automatique? p>
Gardez à l'esprit que j'ai plus de 500 000 entrées dans des catégories Total et 5K uniques pour cette colonne particulière. P>
C'est plus sur l'intuition derrière cela plutôt que de la coder, mais j'ai pensé que cela devrait être le lieu de poser. P>
3 Réponses :
Si vous utilisez le labelEncoder pour une catégorie, vous devez vous assurer que votre catégorie peut être comparable. Par exemple, pour la catégorie ['HIGH', 'MED', "LOW"], les éléments sont comparables, il est donc logique de la désactiver et de la mettre à l'échec standard. P>
Toutefois, lorsque votre catégorie ne peut pas être comparée les unes aux autres, l'étiquette encodant qu'elle n'aurait aucun sens. Par exemple, vous ne pouvez pas comparer "lundi" au "mardi". P>
tl; dr fort>
Si votre catégorie est comparable (ordinale), cela a du sens. Sinon, essayez de trouver des moyens de réduire votre catégorie, il y a beaucoup de méthodes pour le faire. P>
1) Labelencoder est nécessaire car votre modèle d'apprentissage de la machine ne peut pas gérer les chaînes. Vous avez besoin d'une étiquette numérique séquentielle (0, 1, 2, .. n-1). Mais, ce n'est que pour la partie d'étiquette, vous pouvez utiliser un codage à une heure à chaud ou directement les étiquettes numériques en fonction de vos exigences de modèle.
2) StandardsCalar rend votre variance de données à zéro et une variance unitaire. p> La standardisation d'un jeu de données est une exigence courante pour de nombreux estimateurs d'apprentissage de la machine: ils peuvent se comporter mal si les fonctionnalités individuelles ne ressemblent pas plus ou moins à des données normalement distribuées (par exemple Gaussien avec 0 variance moyenne et unité). P> Par exemple, de nombreux éléments utilisés dans la fonction objectif d'un algorithme d'apprentissage (tels que le noyau RBF de machines de vecteur de support ou les régularisateurs L1 et L2 de modèles linéaires) supposent que toutes les fonctionnalités sont centrées autour de 0 et ont une variance dans le même ordre. Si une fonctionnalité contient une variance qui est des ordres de magnitude plus grande que d'autres, il pourrait dominer la fonction objectif et rendre l'estimateur incapable d'apprendre correctement les autres fonctionnalités que prévu. (Documentation Scikit-Apprendre) P> Donc, généralement, cela vous aide à bien augmenter vos données, cela pourrait être utile pour une convergence plus rapide. Mais encore une fois, cela dépend du modèle ML que vous utilisez. P> p>
Vous devriez certainement pas strud> Appliquez ceci à la colonne Label, car la colonne d'étiquette doit être un STRAND> POSITIVE STRY> Lebelencoder code> doit être utilisé pour les étiquettes, afin de disposer d'étiquettes pour n catégories remplacées par des entiers de 1 à n. Vous devriez faire cela si ce n'est pas déjà fait. P>
sommtionCaler code> est destiné à être utilisé, éventuellement, pour les données de formation et de test, mais ni pour les étiquettes. Il génère positif fort> ou négatif fort>
float code>. P>
INTEGER CODE>. P>
DaTrascience.stackexchange.com serait probablement un meilleur endroit pour votre question