python_多项式交叉特征

# 定义:# 多项式特征可以理解为对现有特征的乘积,比如现在有特征A,特征B,特征C,那就可以得到特征A的平方(A^2),A*B,A*C,B^2,B*C以及C^2. 新生成的这些变量即原有变量的有机组合,换句话说,当两个变量各自与y的关系并不强时候,把它们结合成为一个新的变量可能更会容易体现出它们与y的关系.# 变量与结果 之间不是线性关系, 或者两个变量之间相互依赖时, 用多项式交叉特征# 多项式特征和 交叉特征
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
​
# 특성 행렬을 만듭니다.
features = np.array([[2, 3],
                     [2, 3],
                     [2, 3]])
features
# 创建 PolynomialFeatures 对象  
polynomial_interaction = PolynomialFeatures(degree=2, include_bias=False)# 创建 2阶的多项式特征和  交叉特征
polynomial_interaction.fit_transform(features)
array([[2., 3., 4., 6., 9.],
       [2., 3., 4., 6., 9.],
       [2., 3., 4., 6., 9.]])# interaction_only=True  创建只包含多项式的特征
interaction = PolynomialFeatures(degree=2, 
                                 interaction_only=True, include_bias=False)
interaction.fit_transform(features)
array([[2., 3., 6.],
       [2., 3., 6.],
       [2., 3., 6.]])

python_多项式交叉特征

import numpy as np
import pandas as pd
from sklearn.preprocessing import PolynomialFeatures
#polynomial feature 多项式交叉特征

def col_pf(p=3,col=None,title='PF'):
    '''不含常数项,含自乘项'''
    assert p<=3
    assert p>1
    l=len(col)+1
    col=[]
#     for i in range(1,l):
#         col.append(title+str(i))
    if p>=2:
        col=col+[title+str(i)+str(j) for i in range(1,l) for j in range(i+1,l)]
    if p>=3:
        col=col+[title+str(i)+str(j)+str(k)  for i in range(1,l) for j in range(i+1,l) for k in range(j+1,l)]
    return col

def poly_fea(input=None,degree=2,title='PF'):
    poly=PolynomialFeatures(degree=degree,interaction_only=True,include_bias=False)
    pf_trans=poly.fit_transform(input)
    pf_trans=pf_trans[:,input.shape[1]:]
    
    col=col_pf(p=degree,col=input.columns,title=title)
    
    return pd.DataFrame(pf_trans,index=input.index,columns=col)
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值