我正在寻找在scikit-learn的Lasso / LassoCV中添加交互项。如果它是两个连续变量之间或两个分类变量之间的相互作用,我可以添加与交互中每个元素的乘法相对应的列。 但是当我们在分类变量和连续变量之间进行交互时,我无法将它们相乘。
答案 0 :(得分:2)
绝对可以采用分类变量和连续变量之间的相互作用。但是您必须将分类变量转换为数字。有几种方法可以做到这一点,但为每个唯一类别创建二进制列是一种常见的方法。创建新矩阵后,您可以将其发送到sklearn中的fit方法。请参阅下面的极少数示例
# 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
使用pandas函数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']