機器學習入門-數值特征-進行多項式變化(將特征投影到高維度上) 1.PolynomialFeatures(將數據變化為多項式特征)


 

函數說明:

 1. PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)

 參數說明:degree=2,表示多項式的變化維度為2,即^2, interaction_only表示是否只使用a*b, include_bias是否添加一列全部等於1的偏置項  

           

對數據進行多項式變化,將兩個特征a, b如果是進行^2多項式變化操作,那么就相當於多出來了3個特征即a^2, a*b, b^2 

一般我們在使用支持向量機的時候,由於數據在低緯度上的不可分,因此我們需要對數據做一個高維度的映射,以使得數據能夠更加的可分

數據說明:我們使用了游戲數據中的攻擊和防御兩個特征用來構造多項式特征,使用的多項式為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())

                             變化后的參數特征


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM