¿Cómo preparar interacciones de variables categóricas en scikit-learn?

9

¿Cuál es la mejor manera de preparar interacciones de características categóricas antes de ajustar con scikit-learn?

Con statsmodelspodría decir convenientemente en estilo R smf.ols(formula = 'depvar ~ C(var1)*C(var2)', data=df).fit()(lo mismo en Stata con regress depvar i.var1##i.var2).

¿Puede sklearn.preprocessing.PolynomialFeatures(en v0.15, actualmente dev) usarse con variables categóricas?

tobip
fuente

Respuestas:

8

De hecho, puede usar Patsy con scikit-learn para obtener los mismos resultados que obtendría con R, o con la notación de fórmula en los modelos de estadísticas. Ver código a continuación:

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)

ahora puede usar cualquier modelo implementado en scikit-learn con las notaciones habituales que tienen X como variables independientes e y como dependiente.

famargar
fuente
¿Qué pasa si queremos tener un LHS vacío? ( ~var1*var2está perfectamente bien en R para construir la matriz RHS)
MichaelChirico
(debe mencionar dmatrix)
MichaelChirico
8

Usa Patsy .

Patsy es una de mis bibliotecas favoritas de Python: hace una cosa, y solo una, muy, muy bien.

Cam.Davidson.Pilon
fuente