2016-05-10 9 views
0

Ich werde die Kinokasse eines Films mit logistischen Regression vorhersagen. Ich habe einige Zugdaten einschließlich der Schauspieler und Regisseure. Das sind meine Daten:Wie lineare Regresssion von Sklearn für einige String-Variable anwenden

Director1|Actor1|300 million 
Director2|Actor2|500 million 

Ich werde die Direktoren und Schauspieler mit Ganzzahlen kodieren.

1|1|300 million 
2|2|300 million 

was bedeutet, dass X={[1,1],[2,2]} y=[300,500] und fit(X,y) funktioniert das?

+0

Sollte es eine lineare Regression oder etwas anderes sein, wenn Sie versuchen, einen Skalar vorherzusagen. Logistische Regression ist die Wahrscheinlichkeit zu klassifizieren, die eine Reihe von Prädiktoren angibt, die y_hat von Typ A oder B –

+0

Sie könnten sagen - verwenden Sie die Movie_revenue um vorherzusagen, ob der Regisseur Director1 oder Director2 war –

+0

Ja, es ist lineare Regression! – KengoTokukawa

Antwort

6

Sie können kategoriale Variablen in der linearen Regression nicht verwenden. Die lineare Regression behandelt alle Variablen wie numerische Variablen. Wenn Sie also Director1 als 1 und Director2 als 2 codieren, versucht die lineare Regression, eine Beziehung basierend auf diesem Codierungsschema zu finden. Es wird angenommen, Director2 ist doppelt so groß wie Director1. In Wirklichkeit bedeuten diese Zahlen nichts. Sie können sie als 143 und 9879 codieren, es sollte keinen Unterschied geben. Sie haben keine numerische Bedeutung. Um sicherzustellen, dass die lineare Regression sie korrekt behandelt, müssen Sie Dummy-Variablen verwenden.

Mit Dummy-Variablen haben Sie eine Variable für jede Kategorieebene. Zum Beispiel, wenn Sie 3 Direktoren haben, haben Sie 3 Variablen: D1, D2 und D3. D1 hat den Wert 1, wenn der entsprechende Film von Director1 und sonst 0; D2 den Wert 1 hat, wenn der Film durch Director2 und 0 sonst gerichtet war ... also mit einem Satz von Werten D2 D1 D2 D3 D1 D2, Dummy Zugriffe auf Variablen werden:

D1 D2 D3 
D2 0 1 0 
D1 1 0 0 
D2 0 1 0 
D3 0 0 1 
D1 1 0 0 
D2 0 1 0 

In der linearen Regression Um Multikollinearität zu vermeiden, verwenden wir nur n-1 dieser Variablen, wobei n die Anzahl der Kategorien ist (Anzahl der Direktoren für dieses Beispiel). Einer der Direktoren wird als Basis ausgewählt und durch die Konstante im Regressionsmodell dargestellt. Es spielt keine Rolle, welcher. Wenn Sie zum Beispiel D3 ausschließen, wissen Sie, dass der Film von Director3 geleitet wurde, wenn D1=0 und D2=0. Sie müssen D3=1 nicht angeben.

In scikit-learn wird diese Transformation mit OneHotEncoder durchgeführt. Das Beispiel stammt von scikit-learn documentation:

Sie haben drei kategorische Variablen: Geschlecht, Region und Browser. Geschlecht hat 2 Ebenen: ["male", "female"], Region hat drei Ebenen: ["from Europe", "from US", "from Asia"] und Browser hat vier Ebenen: ["uses Firefox", "uses Chrome", "uses Safari", "uses Internet Explorer"]. Angenommen, sie sind mit nullbasierten Zahlen codiert. Also [0, 1, 2] bedeutet ein Mann aus USA, der Safari benutzt.

>>> enc = preprocessing.OneHotEncoder() 
>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]) 
OneHotEncoder(categorical_features='all', dtype=<... 'float'>, 
     handle_unknown='error', n_values='auto', sparse=True) 
>>> enc.transform([[0, 1, 3]]).toarray() 
array([[ 1., 0., 0., 1., 0., 0., 0., 0., 1.]]) 

Mit enc.fit Scikit-Learn folgert die Anzahl der Ebenen für jede Variable. Für eine Beobachtung wie [0, 1, 3], wenn Sie enc.transform aufrufen, sehen Sie ihre Dummy-Variablen. Beachten Sie, dass die resultierende Array-Länge 2 + 3 + 4 = 9 ist. Die ersten beiden für Geschlecht (wenn männlich, ist die erste 1), die nächsten drei für Region und so weiter.

+0

Was ist, wenn der Film sowohl von Director 1 als auch von Director 2 gesteuert wird und die Ergebnisse zu 1, 1, 0 werden? Oder 0,1,0,1,0,0? – KengoTokukawa

+0

Es wird 1, 1, 0, da es nur eine Beobachtung ist. Aber jetzt schließen sich die Kategorien nicht gegenseitig aus, so dass "n-1" hier nicht zutrifft. Sie schließen alle drei in die Regression ein. – ayhan

+0

Warum wird die Methode "fit" benötigt? – LKM