【特征工程】多项式特征PolynomialFeatures(将数据变化为多项式特征)

使用sklearn.preprocessing.PolynomialFeatures来进行特征的构造。

它是使用多项式的方法来进行的,如果有a,b两个特征,那么它的2次多项式为(1,a,b,a^2,ab, b^2)。

PolynomialFeatures有三个参数

degree:控制多项式的度

interaction_only: 默认为False,如果指定为True,那么就不会有特征自己和自己结合的项,上面的二次项中没有a^2和b^2。

include_bias:默认为True。如果为True的话,那么就会有上面的 1那一项。

代码演示

数据说明:我们使用了游戏数据中的攻击和防御两个特征用来构造多项式特征,使用的多项式为2 

代码:

第一步:导入数据

第二步:分离出[‘Attack’, ‘Defense’]两个特征

第三步:使用 PolynomialFeatures 进行多项式的变化,

第四步:使用pd.DataFrame对获得的列表添加列名,用于展示

  1.  
    import numpy as np
  2.  
    import pandas as pd
  3.  
    import matplotlib.pyplot as plt
  4.  
     
  5.  
     
  6.  
    poke_df = pd.read_csv('datasets/Pokemon.csv', encoding='utf-8')
  7.  
    att_de = poke_df[['Attack', 'Defense']]
  8.  
     
  9.  
    # 对att_de进行两两特征之间的多项式特征扩展,可以认为是把特征投向高维
  10.  
    from sklearn.preprocessing import PolynomialFeatures
  11.  
     
  12.  
    #degree 表示多项式的维度,即^2, interaction_only表示是否仅使用a*b,include_bias表示是否引入偏执项1
  13.  
    po = PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)
  14.  
    att_de_po = po.fit_transform(att_de)
  15.  
    print(att_de_po[:5])
  16.  
    # 使用pd.DataFrame将数据转换为pd格式
  17.  
    att_de_po_pd = pd.DataFrame(att_de_po, columns=['Attack', 'Defense', 'Attack^2', 'Att_Def', 'Defense^2'])
  18.  
    print(att_de_po_pd.head())

原文地址:https://www.cnblogs.com/lvdongjie/p/14248179.html