比如我想对两个特征x1和x2做交互项,在python里有什么方法吗?
在R里的话,可以直接用
y ~ x1 + x2 + x1:x2
python里如果是sklearn模型的话,怎么能够得到两个特征的交互项呢?
2个回答
sklearn里的PolynomialFeatures可以基本实现这个功能
from sklearn.preprocessing import PolynomialFeatures
# 新建一个dataframe
X = pd.DataFrame()
X['x1'] = [1, 1, 1, 2, 0, 0]
X['x2'] = [3, 2, 1, 3, 2, 1]
下面构造交互项
interaction = PolynomialFeatures(2, interaction_only=True, include_bias=False)
X_transformed = interaction.fit_transform(X)
得到的X_transformed就有三列,第三列是x1和x2的乘积
array([[ 1., 3., 3.],
[ 1., 2., 2.],
[ 1., 1., 1.],
[ 2., 3., 6.],
[ 0., 2., 0.],
[ 0., 1., 0.]])