Die Verwendung von kategorischen Daten als features in sklean LogisticRegression
Ich versuche zu verstehen, wie die Verwendung von kategorischen Daten als features in sklearn.linear_model
's LogisticRegression
.
Verstehe ich natürlich, die ich brauche, um zu verschlüsseln.
-
Was ich nicht verstehe, ist, wie pass die codierte Funktion der Logistischen regression also ist es verarbeitet, wie ein kategorisches Merkmal, und nicht die Interpretation der int-Wert es wurde bei der Kodierung als standard-messbaren Funktion.
-
(Weniger wichtig) Kann jemand erklären den Unterschied zwischen der Verwendung
preprocessing.LabelEncoder()
,DictVectorizer.vocabulary
oder nur die Codierung der kategorialen Daten selbst mit einem einfachen dict? Alex A. Kommentar hier berührt das Thema aber nicht sehr tief.
Besonders mit dem ersten!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen, die Indikator-Variablen für die verschiedenen Kategorien. Zum Beispiel:
Dann haben wir:
Und Sie können verketten Sie diese auf deine original-Daten-matrix:
Aber erinnern zu verlassen, eine Kategorie ohne ein Indikator, ob aus einem Konstanten term enthalten ist in den Daten der matrix! Ansonsten werden Ihre Daten-matrix nicht voll Spalte Rang (oder in ökonometrischen Termini, Sie haben multicollinearity).
n
dimensionalen Vektorraum? (zB. anzeigen Tier name zu 2-dimensionalen Vektorraum (Größe, Gewicht)). Aber wenn Sie möchten, dass zur Behandlung von jeder Kategorie Ihre eigene eindeutige Kategorie, das ist, was Sie (im Allgemeinen für regression) zu tun haben. Und wenn Sie davon ausgehen können die Auswirkungen VARIIEREN je nach Kategorie, Sie haben alle das zusammenspiel Bedingungen zu Ihrer Kategorien mit der anderen Regressoren. Vielleicht sklearn wird dies für Sie tun hinter den kulissen (ich habe keine Ahnung), aber das ist wohl, was passieren wird.Ist es völlig verschiedene Klassen:
[DictVectorizer][2].vocabulary_
ich.e Nach
fit()
DictVectorizer
hat alle möglichen feature-Namen, und jetzt ist es weiß, in die bestimmte Spalte es wird ein besonderes Wert einer Funktion. SoDictVectorizer.vocabulary_
enthält Indizes von Funktionen, aber nicht Werte.LabelEncoder
im Gegenteil ordnet jedem möglichen label (Label sein könnte, string oder integer) in eine Ganzzahl um und gibt 1D-Vektor, der diese integer-Werte.Nehme an, dass die Art der kategorischen variable "Objekt". Erstens, können Sie eine
panda.index
der kategorische Spalte-Namen:Dann können Sie die Indikator-Variablen mit einer for-Schleife unten. Für die binären kategorialen Variablen, verwenden Sie die
LabelEncoder()
konvertieren0
und1
. Für kategoriale Variablen mit mehr als zwei Kategorien, verwendenpd.getDummies()
zu erhalten, die Indikator-Variablen und dann eine Kategorie (um zu vermeiden, multicollinearity Problem).