2016-12-26 2 views
0

Ich suche nach dem Hinzufügen des Interaktionsterms in Lasso/LassoCV von scikit-learn. Wenn es die Interaktion zwischen zwei kontinuierlichen Variablen oder zwischen zwei kategorischen Variablen ist, kann ich die Spalten hinzufügen, die der Multiplikation jedes Elements in der Interaktion entsprechen. Aber wenn wir die Interaktion zwischen einer kategorialen Variablen und einer kontinuierlichen Variablen haben, kann ich sie nicht multiplizieren.Python - Interaktionstermin in Lasso/LassoCV?

Antwort

2

Sie können die Interaktion zwischen einer kategorialen Variablen und einer kontinuierlichen Variablen absolut nehmen. Aber Sie müssen Ihre kategorische Variable in eine Zahl umwandeln. Es gibt einige Möglichkeiten, dies zu tun, aber eine binäre Spalte für jede eindeutige Kategorie zu erstellen, ist eine gängige Methode. Sobald Sie die neue Matrix erstellt haben, können Sie diese an Ihre Fit-Methode in sklearn senden. Siehe meine sehr minimal Beispiel unten

# create data with categorical and continuous variables 
import pandas as pd 
df = pd.DataFrame({'cat':['a','b','c'], 'cont':[4,1,10]}) 

Ausgabe

cat cont 
0 a  4 
1 b  1 
2 c 10 

Verwenden Pandas get_dummies funktionieren Binärgrößen erstellen

df_new = pd.get_dummies(df) 

Ausgabe von transformierten Daten

cont cat_a cat_b cat_c 
0  4  1  0  0 
1  1  0  1  0 
2 10  0  0  1 

Jetzt können Sie einfache Operationen

df['a_new'] = df['cont'] * df['cat_a'] 
tun