Comment préparer les interactions des variables catégorielles dans scikit-learn?

9

Quelle est la meilleure façon de préparer les interactions des caractéristiques catégorielles avant de les adapter à scikit-learn?

Avec statsmodelsje pourrais facilement dire en style R smf.ols(formula = 'depvar ~ C(var1)*C(var2)', data=df).fit()(même chose avec Stata avec regress depvar i.var1##i.var2).

Peut-on sklearn.preprocessing.PolynomialFeatures(dans la v0.15, actuellement dev) être utilisé avec des variables catégorielles?

glisser
la source

Réponses:

8

En effet, vous pouvez utiliser Patsy avec scikit-learn pour obtenir les mêmes résultats que vous obtiendriez avec R, ou avec la notation de formule dans les modèles de statistiques. Voir le code ci-dessous:

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)

vous pouvez désormais utiliser n'importe quel modèle implémenté dans scikit-learn avec les notations habituelles ayant X comme variables indépendantes, et y comme variable dépendante.

famargar
la source
que faire si nous voulons avoir un LHS vide? ( ~var1*var2est parfaitement bien dans R pour construire la matrice RHS)
MichaelChirico
(vous devez mentionner dmatrix)
MichaelChirico
8

Utilisez Patsy .

Patsy est l'une de mes bibliothèques Python préférées: elle fait une chose, et une seule, vraiment très bien.

Cam.Davidson.Pilon
la source