2016-12-26 112 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']