我正在寻找在 scikit-learn 的 Lasso / LassoCV 中添加交互项。如果是两个连续变量之间或者两个分类变量之间的交互,我可以在交互中添加对应于每个元素相乘的列。但是当我们有分类变量和连续变量之间的交互时,我不能将它们相乘。
问问题
1377 次
1 回答
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']
于 2016-12-27T13:29:59.847 回答