使用 poly 进行特征交叉,并将交叉后的特征拼接到原 df 中

代码拆解

  1. 首先导入包
import numpy as np
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import PolynomialFeatures
import pandas as pd
  1. 然后创建一个feature_df
feature_df = pd.DataFrame({"fea1":[0,1,2,3], "fea2":[4,5,6,7], "fea3":[8,9,10,11]})
feature_df

在这里插入图片描述
3. 选择指定列名,进行ploy特征交叉,这里选的是 fea1fea2

crossed_feas = ["fea1", "fea2"]
ct = ColumnTransformer([('poly', PolynomialFeatures(degree=2, include_bias=False), crossed_feas)])
crossed_features = ct.fit_transform(feature_df)

  1. 获取交叉的特征名,这里会包含原始的特征名
poly_feature_names = ct.transformers_[0][1].get_feature_names_out(['fea1', 'fea2'])
print(f"poly_feature_names: {poly_feature_names}")
poly_feature_names: ['fea1' 'fea2' 'fea1^2' 'fea1 fea2' 'fea2^2']
  1. 交叉特征拼到原feature_df后面
feature_df_crossed = pd.DataFrame(crossed_features, columns=poly_feature_names)
# 这里只选取了新生成的特征,原特征在feature_df里有,所以没必要拼接
feature_df_crossed_only = feature_df_crossed.iloc[:, len(crossed_feas):]
feature_df = pd.concat([feature_df, feature_df_crossed_only], axis=1)

feature_df

在这里插入图片描述

完整代码


import numpy as np
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import PolynomialFeatures
import pandas as pd

feature_df = pd.DataFrame({"fea1":[0,1,2,3], "fea2":[4,5,6,7], "fea3":[8,9,10,11]})
# poly特征交叉
crossed_feas = ["fea1", "fea2"]
ct = ColumnTransformer([('poly', PolynomialFeatures(degree=2, include_bias=False), crossed_feas)])
# 生成新特征df
crossed_features = ct.fit_transform(feature_df)
poly_feature_names = ct.transformers_[0][1].get_feature_names_out(['fea1', 'fea2'])
print(f"poly_feature_names: {poly_feature_names}")
feature_df_crossed = pd.DataFrame(crossed_features, columns=poly_feature_names)
feature_df_crossed_only = feature_df_crossed.iloc[:, len(crossed_feas):]
# 拼接到原df后面
feature_df = pd.concat([feature_df, feature_df_crossed_only], axis=1)

feature_df

PolynomialFeatures 的用法

`PolynomialFeatures` 是一个用于生成多项式特征的转换器。它的参数如下:

- `degree`:生成的多项式的最高次数。默认值为2- `include_bias`:是否包括偏置列。如果为True,则会在生成的特征矩阵中添加一列全为1的列。默认值为True- `interaction_only`:是否只生成交互项,不生成幂项。如果为True,则只生成输入特征之间的交互项,不生成幂项。默认值为False- `order`:控制生成的多项式的顺序。如果为'C',则按照列的字母顺序生成多项式。如果为'F',则按照列的顺序生成多项式。默认值为'C'
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值