【特征工程】多项式特征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())

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

上一篇:贝塞尔搜索差异演化算法


下一篇:BP算法中的链式求导法则详解