0
我正在寻找在scikit-learn的Lasso/LassoCV中添加交互项。如果是两个连续变量之间或两个分类变量之间的交互作用,我可以添加与交互中每个元素相乘的列。 但是当我们有一个分类变量和一个连续变量之间的相互作用时,我不能把它们相乘。Python - Lasso/LassoCV中的交互项?
我正在寻找在scikit-learn的Lasso/LassoCV中添加交互项。如果是两个连续变量之间或两个分类变量之间的交互作用,我可以添加与交互中每个元素相乘的列。 但是当我们有一个分类变量和一个连续变量之间的相互作用时,我不能把它们相乘。Python - 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
使用熊猫功能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']