Python 如何在熊猫中生成许多交互术语?

Python 如何在熊猫中生成许多交互术语?,python,pandas,scikit-learn,statsmodels,Python,Pandas,Scikit Learn,Statsmodels,我想使用与年份、人口统计等模型的许多交互作用来估计回归模型。我找不到一个明确的方法在熊猫身上做到这一点,我很好奇是否有人有提示 我正在考虑尝试scikit学习和此功能: 您可以使用sklearn的多项式特征函数。以下是一个例子: 假设这是您的设计(即特征)矩阵: 结果如下: array([[ 3., 20., 11., 60., 33., 220.], [ 6., 2., 7., 12., 42., 14.], [

我想使用与年份、人口统计等模型的许多交互作用来估计回归模型。我找不到一个明确的方法在熊猫身上做到这一点,我很好奇是否有人有提示

我正在考虑尝试scikit学习和此功能:


您可以使用sklearn的多项式特征函数。以下是一个例子:

假设这是您的设计(即特征)矩阵:

结果如下:

array([[   3.,   20.,   11.,   60.,   33.,  220.],
       [   6.,    2.,    7.,   12.,   42.,   14.],
       [  18.,    2.,   17.,   36.,  306.,   34.],
       [  11.,   12.,   19.,  132.,  209.,  228.],
       [   7.,   20.,    6.,  140.,   42.,  120.]])

前三个功能是原始功能,后三个是原始功能的交互。

我现在面临一个类似的问题,我需要一种灵活的方法来创建特定的交互,并查看StackOverflow。我遵循上面@user333700评论中的提示,感谢他找到了patsy(),在谷歌搜索之后,这个scikit学习集成patsylearn()

通过@motam79的例子,这是可能的:

import numpy as np
import pandas as pd
from patsylearn import PatsyModel, PatsyTransformer
x = np.array([[ 3, 20, 11],
   [ 6,  2,  7],
   [18,  2, 17],
   [11, 12, 19],
   [ 7, 20,  6]])
df = pd.DataFrame(x, columns=["a", "b", "c"])
x_t = PatsyTransformer("a:b + a:c + b:c", return_type="dataframe").fit_transform(df)
这将返回以下内容:

     a:b    a:c    b:c
0   60.0   33.0  220.0
1   12.0   42.0   14.0
2   36.0  306.0   34.0
3  132.0  209.0  228.0
4  140.0   42.0  120.0
我在这里回答了一个类似的问题,我提供了另一个分类变量的示例:

使用patsy公式我添加了一个维基百科链接来解释缩写词IVBTW:statsmodels有IV(沙箱中的IV2SLS和IVGMM)
     a:b    a:c    b:c
0   60.0   33.0  220.0
1   12.0   42.0   14.0
2   36.0  306.0   34.0
3  132.0  209.0  228.0
4  140.0   42.0  120.0