Wie bereite ich Interaktionen von kategorialen Variablen in Scikit-Learn vor?

9

Was ist der beste Weg, um Interaktionen mit kategorialen Merkmalen vorzubereiten, bevor Sie mit scikit-learn arbeiten?

Mit statsmodelskönnte ich bequem im R-Stil sagen smf.ols(formula = 'depvar ~ C(var1)*C(var2)', data=df).fit()(gleich in Stata mit regress depvar i.var1##i.var2).

Kann sklearn.preprocessing.PolynomialFeatures(in v0.15, derzeit dev) mit kategorialen Variablen verwendet werden?

tobip
quelle

Antworten:

8

In der Tat können Sie Patsy mit scikit-learn verwenden, um die gleichen Ergebnisse zu erzielen, die Sie mit R oder mit der Formelnotation in Statistikmodellen erzielen würden. Siehe Code unten:

from patsy import dmatrices

# create dummy variables, and their interactions
y, X = dmatrices('depvar ~ C(var1)*C(var2)', df, return_type="dataframe")
# flatten y into a 1-D array so scikit-learn can understand it
y = np.ravel(y)

Sie können jetzt jedes in scikit-learn implementierte Modell mit den üblichen Notationen verwenden, wobei X als unabhängige Variablen und y als abhängige Variable verwendet werden.

Famargar
quelle
Was ist, wenn wir eine leere LHS haben wollen? ( ~var1*var2ist in R vollkommen in Ordnung für die Konstruktion der RHS-Matrix)
MichaelChirico
(Sie sollten erwähnen dmatrix)
MichaelChirico
8

Benutze Patsy .

Patsy ist eine meiner Lieblings-Python-Bibliotheken: Es macht eine Sache und nur eine Sache, wirklich sehr, sehr gut.

Cam.Davidson.Pilon
quelle