【发布时间】:2021-08-23 19:20:55
【问题描述】:
我正在尝试在数据集中创建交互项。是否有另一种(更简单)的方法来创建数据集中列的交互项?例如,在列 4:98 和 98:106 的组合中创建交互项。我尝试使用 numpy 数组遍历列,但使用以下代码,内核不断死亡。
col1 = df.columns[4:98] #94 columns
col2 = df.columns[98:106] #8 columns
var1_np = df_np[:, 4:98]
var2_np = df_np[:, 98:106]
for i in range(94):
for j in range(8):
name = col1[i] +"*" + col2[j]
df[name] = var1_np[:,i]*var2_np[:,j]
这里,df 是数据帧,df_np 是 NumPy 数组中的 df。
【问题讨论】:
-
在执行这段代码的过程中你检查过你机器上的内存使用吗?我们不知道您的数据框中有多少行,但考虑到您正在创建的新列的数量,内存可能是一个问题。您可能想尝试在较少的列上测试您的代码。您也可以尝试使用交互项创建一个 numpy 数组,然后将整个数组一次转换为一个新的数据帧,因为这将是一个成本较低的操作。
-
另外,scikit-learn 的PolynomialFeatures 经常被用来生成交互词。
标签: python pandas numpy kernel interaction