2016-12-26 57 views
0

我正在尋找在scikit-learn的Lasso/LassoCV中添加交互項。如果是兩個連續變量之間或兩個分類變量之間的交互作用,我可以添加與交互中每個元素相乘的列。 但是當我們有一個分類變量和一個連續變量之間的相互作用時,我不能把它們相乘。Python - Lasso/LassoCV中的交互項?

回答

2

您絕對可以採用分類變量和連續變量之間的交互作用。但是您必須將您的分類變量轉換爲數字。有幾種方法可以做到這一點,但爲每個獨特類別製作二進制列是實現此目的的常用方法。一旦你創建了新的矩陣,你可以用sklearn把它發送到你的擬合方法。見我很小的例子如下

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

輸出

cat cont 
0 a  4 
1 b  1 
2 c 10 

使用熊貓功能get_dummies創造二元變量

df_new = pd.get_dummies(df) 

輸出轉換後的數據

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

的現在你可以做簡單的操作

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