Python - Lasso / LassoCV 中的交互项?

Python - Interaction term in Lasso / LassoCV?

我正在搜索在 scikit-learn 的 Lasso / LassoCV 中添加交互项。如果是两个连续变量之间或者两个分类变量之间的交互,我可以添加交互中每个元素相乘对应的列。 但是当我们有一个分类变量和一个连续变量之间的交互时,我不能将它们相乘。

你完全可以考虑分类变量和连续变量之间的交互作用。但是你必须把你的分类变量变成一个数字。有几种方法可以做到这一点,但为每个唯一类别制作一个二进制列是一种常见的方法。创建新矩阵后,您可以将其发送到 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

使用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']