有时候我们在处理数据的过程中,希望在原有特征的基础上,再有更多的,更高次方项特征来拟合数据,这样做的好处是可以使拟合模型打弯,进而拟合的更好。
我们可以利用其它辅助工具来完成这个任务,也可以直接在sklearn中调用多项式生成函数来帮我们完成这个任务,下面简要做个例子。
# 导入pandas用于制作数据
import pandas as pd
# 导入PolynomialFeatures生成函数
from sklearn.preprocessing import PolynomialFeatures
# 制作数据
a = pd.DataFrame([[1,2,3],
[4,5,6],
[1,8,9]],columns = ["feature_1", "feature_2", "label"])
# 建立多项式生成模型
polyCoder = PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)
'''
# 参数简要介绍
degree : 表示要生成原有数据的多少次方项,比如2,就是生成x^2或x*x1
include_bias : 是否包含偏置项
interaction_only : 是否只生成自身的高次方,如果为true,则不生成x1*x2,x1*x3等,只生成x1^2,x2^2等
'''
# 开始生成,生成以后是一个二维数组,需要再次转为pandas数据类型
df = polyCoder.fit_transform(a)
# polyCoder.get_feature_names()可以获得列名(比如列名:x1x2,x2x3,x2^2),直接赋予新的数据
pd.DataFrame(df, columns=polyCoder.get_feature_names())