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']
我正在搜索在 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']