【特征工程】多项式特征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对获得的列表添加列名,用于展示

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


poke_df = pd.read_csv('datasets/Pokemon.csv', encoding='utf-8')
att_de = poke_df[['Attack', 'Defense']]

# 对att_de进行两两特征之间的多项式特征扩展,可以认为是把特征投向高维
from sklearn.preprocessing import PolynomialFeatures

#degree 表示多项式的维度,即^2, interaction_only表示是否仅使用a*b,include_bias表示是否引入偏执项1
po = PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)
att_de_po = po.fit_transform(att_de)
print(att_de_po[:5])
# 使用pd.DataFrame将数据转换为pd格式
att_de_po_pd = pd.DataFrame(att_de_po, columns=['Attack', 'Defense', 'Attack^2', 'Att_Def', 'Defense^2'])
print(att_de_po_pd.head())

【特征工程】多项式特征PolynomialFeatures(将数据变化为多项式特征)_第1张图片

你可能感兴趣的:(机器学习,Python,python)