2017-04-25 2 views
3

Ich benutze Scikit learns Logistische Regression für ein Multiklassenproblem.Welche Koeffizienten gehen zu welcher Klasse in der multiklassenlogistischen Regression in scikit lernen?

logit = LogisticRegression(penalty='l1') 
logit = logit.fit(X, y) 

Ich bin interessiert, welche Funktionen diese Entscheidung beeinflussen.

logit.coef_ 

Die oben gibt mir ein schönes Datenrahmen in (n_classes, n_features) Format, aber alle Klassen und Feature-Namen sind verschwunden. Mit Funktionen, das ist in Ordnung, weil die Annahme, dass sie auf die gleiche Weise wie ich sie passierte, scheint sicher ...

Aber mit Klassen, es ist ein Problem, da ich nie explizit in den Klassen in keiner bestanden Auftrag. Also zu welcher Klasse gehören die Koeffizientensätze (Zeilen im Datenrahmen) 0, 1, 2 und 3?

+0

es wird einfach aus dem Index 0 bis 'bestellt werden n_classses-1 '. Haben Sie numerischen oder Strings in' Y 'passieren? Wenn Strings Dann wird LabelEncoder darauf verwendet, um in numerische Form zu konvertieren . Kannst du dein "y" hier zeigen? –

+0

Saiten. Bezeichnungen sind: 'Array (['GR3', 'GR4', 'SHH', 'GR3', 'GR4', 'SHH', 'GR4', 'SHH', 'GR4', 'WNT', 'GR3 "GR4", "GR3", "SHH", "SHH", "GR3", "GR4", "SHH", "GR4", "GR3", "SHH", "GR3", "SHH" "GR4", "SHH", "GR3", "GR4", "GR4", "SHH", "GR4", "SHH", "GR4", "GR3", "GR3", "WNT", "SHH", "GR4", "SHH", "SHH", "GR3", "WNT", "GR3", "GR4", "GR3", "SHH", dtype = Objekt) "und ich bekomme Klassen '0, 1, 2, 3'. Was entspricht welchem? –

+0

Gibt es eine Möglichkeit, auf das LabelEncoder-Objekt innerhalb des LogisticRegression-Objekts zuzugreifen? –

Antwort

5

Die Reihenfolge ist die gleiche wie die von logit.classes_ zurückgegebene Klasse (classes_ ist ein Attribut des angepassten Modells, das die in y vorhandenen eindeutigen Klassen repräsentiert) und meistens werden sie im Falle von Strings alphabetisch angeordnet.

es zu erklären, wir die oben genannten Etikett y auf einem zufälligen Datensatz mit Logistische Regression:

import numpy as np 
from sklearn.linear_model import LogisticRegression 

X = np.random.rand(45,5) 
y = np.array(['GR3', 'GR4', 'SHH', 'GR3', 'GR4', 'SHH', 'GR4', 'SHH', 
       'GR4', 'WNT', 'GR3', 'GR4', 'GR3', 'SHH', 'SHH', 'GR3', 
       'GR4', 'SHH', 'GR4', 'GR3', 'SHH', 'GR3', 'SHH', 'GR4', 
       'SHH', 'GR3', 'GR4', 'GR4', 'SHH', 'GR4', 'SHH', 'GR4', 
       'GR3', 'GR3', 'WNT', 'SHH', 'GR4', 'SHH', 'SHH', 'GR3', 
       'WNT', 'GR3', 'GR4', 'GR3', 'SHH'], dtype=object) 

lr = LogisticRegression() 
lr.fit(X,y) 

# This is what you want 
lr.classes_ 

#Out: 
# array(['GR3', 'GR4', 'SHH', 'WNT'], dtype=object) 

lr.coef_ 
#Out: 
# array of shape [n_classes, n_features] 

So in der coef_ Matrix, wobei der Index 0 in Reihen stellt die 'GR3' (die erste Klasse in classes_ Array, 1 = 'GR4' und so weiter.

Hoffe, es hilft.

+0

Vielen Dank Vivek! –

Verwandte Themen