机器学习入门-数据预处理-进行多项式变化(将特征投影到高维度上)

Posted my-love-is-python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习入门-数据预处理-进行多项式变化(将特征投影到高维度上)相关的知识,希望对你有一定的参考价值。

 

函数说明:

 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())

技术分享图片

                             变化后的参数特征

以上是关于机器学习入门-数据预处理-进行多项式变化(将特征投影到高维度上)的主要内容,如果未能解决你的问题,请参考以下文章

机器学习入门好文,强烈推荐! ! !

吴恩达“机器学习”——学习笔记五

机器学习笔记非线性变换

简单易懂 | 机器学习如何快速入门?

机器学习基础---神经网络(属于逻辑回归)(构建假设函数)

机器学习中的常用操作