Python - Lasso / LassoCV中的交互术语?

时间:2016-12-26 23:12:25

标签: python pandas scikit-learn lasso

我正在寻找在scikit-learn的Lasso / LassoCV中添加交互项。如果它是两个连续变量之间或两个分类变量之间的相互作用,我可以添加与交互中每个元素的乘法相对应的列。 但是当我们在分类变量和连续变量之间进行交互时,我无法将它们相乘。

1 个答案:

答案 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']