À l'aide des données catégoriques que des fonctionnalités dans sklean LogisticRegression
Je suis en train d'essayer de comprendre comment utiliser les données catégorielles en tant que fonctions dans sklearn.linear_model
's LogisticRegression
.
Je comprends bien sûr j'ai besoin de coder.
-
Ce que je ne comprends pas, c'est comment passer de l'codé en fonction de la régression Logistique il est donc traitée comme une catégorie de fonction, et non de l'interprétation de la valeur int qu'il a obtenu lors de l'encodage standard quantifiables fonctionnalité.
-
(Moins important) quelqu'un Peut-il expliquer la différence entre l'utilisation de
preprocessing.LabelEncoder()
,DictVectorizer.vocabulary
ou tout simplement l'encodage des données catégorielles vous-même avec une simple dict? Alex A. commentaire ici touche sur le sujet, mais pas très profondément.
Surtout avec le premier!
OriginalL'auteur Optimesh | 2015-11-28
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer des variables indicatrices pour les différentes catégories. Par exemple:
Puis nous avons:
Et vous pouvez concaténer ces derniers sur vos données d'origine de la matrice:
Rappelez-vous cependant de laisser une catégorie sans un indicateur si un terme constant est inclus dans la matrice de données! Sinon, vos données de la matrice ne sera pas complète colonne de rang (ou en termes économétriques, vous avez un problème de multicolinéarité).
Je ne suis pas sûr de ce que vous voulez, alors? Vous pouvez les regrouper en grandes catégories? Ou carte les catégories dans un certains
n
dimensions d'espace vectoriel? (eg. carte nom d'animal à 2 dimensions d'espace vectoriel (taille, poids)). Mais si vous voulez traiter chaque catégorie, comme sa propre catégorie, c'est ce que vous (en général pour la régression) ont à faire. Et si vous assumez les effets peuvent VARIER en fonction de la catégorie, vous devez avoir tous les termes d'interaction trop de vos catégories avec vos autres variables explicatives. Peut-être sklearn fera cela pour vous dans les coulisses (je n'en ai aucune idée), mais c'est probablement ce qui va arriver.il n'y a pas de meilleure façon, mais vous pouvez réduire la dimensionnalité par FeatureHashing, ou des techniques plus complexes comme APC, etc Aussi, ce post propose la même Chaud de Codage de la technique.
OriginalL'auteur Matthew Gunn
C'est complètement différent classes:
[DictVectorizer][2].vocabulary_
je.e Après
fit()
DictVectorizer
a tous possible les noms de fonction, et maintenant, il sait dans quelle colonne il mettra particulièrement en valeur d'une fonction. DoncDictVectorizer.vocabulary_
contient indicies de fonctionnalités, mais pas les valeurs.LabelEncoder
en face de cartes de chaque étiquette (Label pourrait être string ou integer) pour certaines valeur entière, et renvoie 1D vecteur de ces valeurs entières.Qu'entendez-vous par "codé"? Si vous parlez des variables de l'objet - il n'y a rien de mal dans les objectifs [1,2,3], LogisticRegression sera tout simplement construire 3 (dans ce cas particulier) classificateurs et de les combiner dans OneVsRest régime. Si vous parlez des caractéristiques - OneHotEncoder encoder chaque catégorique fonctionnalité dans un format binaire, c'est à dire qu'il va créer de nouveaux binaires plutôt la fonction de chaque valeur possible pour catégorique fonction, je.e dataset résultant aura séparés binaire caractéristiques (colonnes) pour les valeurs de Chien=1, Chien=2, Chien=3, Cat=1, etc. Regarde les exemples dans la documentation officielle.
OriginalL'auteur Ibraim Ganiev
Supposons que le type de chaque variable catégorique "objet". Tout d'abord, vous pouvez créer un
panda.index
de catégorique les noms de colonne:Ensuite, vous pouvez créer l'indicateur de variables à l'aide d'une boucle for ci-dessous. Pour les binaires variables catégorielles, utilisez le
LabelEncoder()
pour le convertir en0
et1
. Pour les variables catégorielles avec plus de deux catégories, l'utilisationpd.getDummies()
pour obtenir les variables indicatrices, puis déposer une catégorie (pour éviter le problème de multicolinéarité).OriginalL'auteur Yongkai