python中如何产生交互项?

  统计/机器学习 监督式学习 数据预处理 特征选择 Python    浏览次数:6207        分享
0

比如我想对两个特征x1和x2做交互项,在python里有什么方法吗?

在R里的话,可以直接用

y ~ x1 + x2 + x1:x2

python里如果是sklearn模型的话,怎么能够得到两个特征的交互项呢?

 

wlk1993   2018-10-20 13:27



   2个回答 
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.]])


SofaSofa数据科学社区DS面试题库 DS面经

chrisliang   2018-10-23 12:50

0

直接手算似乎更方便

df['x1_x2'] = df['x1'] * df['x2']
SofaSofa数据科学社区DS面试题库 DS面经

蘑菇蘑菇   2018-11-14 14:26



  相关讨论

如果一列特征有90%以上的数值都是0,这个特征还有用吗?

在进行数值编码时出现错误,怎么解决?

如何检测判断特征的多重共线性?

类别型变量如何分箱

分类问题 特征怎么选择

特征组合的重要性排序

在分类问题中,有什么方法可以得到特征的重要性?

partial dependence是什么意思?

shap值为负是什么意思,可以删掉的意思吗

不同模型下的特征重要性是不同的吗?

  随便看看

怎么把pandas dataframe中一列英文文本全部转成小写?

pandas.DataFrame更改列名

怎么给plt.subplot加一个主标题?

怎么对pandas dataframe的列求众数

什么是混淆矩阵(confusion matrix)