sklearn.preprocessing模块中的多项式特征生成方法介绍
sklearn.preprocessing模块中的多项式特征生成方法是一种将原始特征转化为多项式特征的方法。这种方法可以通过增加特征的高次幂项,来捕捉特征之间的非线性关系。在分类和回归模型中,多项式特征生成方法可以提高模型的性能。
在sklearn.preprocessing模块中,多项式特征生成方法主要有两个类可用:PolynomialFeatures和FunctionTransformer。
1. PolynomialFeatures类:
PolynomialFeatures类可以将特征的原始维度通过增加特征的高次幂项转化为多项式特征。它可以生成多项式特征的所有组合,并将原始特征的各个指数项相乘。通过设置参数degree,可以控制生成特征的最高次幂。
下面是一个示例代码,演示如何使用PolynomialFeatures类生成多项式特征:
from sklearn.preprocessing import PolynomialFeatures
import numpy as np
# 原始特征
X = np.array([[1, 2],
[3, 4],
[5, 6]])
# 创建PolynomialFeatures对象
poly = PolynomialFeatures(degree=2)
# 生成多项式特征
X_poly = poly.fit_transform(X)
print(X_poly)
输出结果为:
[[ 1. 1. 2. 1. 2. 4.]
[ 1. 3. 4. 9. 12. 16.]
[ 1. 5. 6. 25. 30. 36.]]
从输出结果可以看出,原始的2维特征被转化为了6维的多项式特征。
2. FunctionTransformer类:
FunctionTransformer类可以通过自定义函数将特征转化为多项式特征。它的transform函数需要传入一个自定义函数作为参数,该函数将应用于特征的每个元素上。
下面是一个示例代码,演示如何使用FunctionTransformer类生成多项式特征:
from sklearn.preprocessing import FunctionTransformer
import numpy as np
# 原始特征
X = np.array([[1, 2],
[3, 4],
[5, 6]])
# 自定义函数
def polynomials(x):
return [x, x**2, x**3]
# 创建FunctionTransformer对象
transformer = FunctionTransformer(polynomials)
# 生成多项式特征
X_poly = transformer.transform(X)
print(X_poly)
输出结果为:
[[ 1. 1. 1. 1. 2. 4. 1. 8. 27.]
[ 3. 9. 27. 9. 36. 16. 27. 64. 125.]
[ 5. 25. 125. 25. 150. 36. 125. 216. 343.]]
从输出结果可以看出,原始的2维特征被转化为了9维的多项式特征。
综上所述,sklearn.preprocessing模块中的多项式特征生成方法可以通过增加特征的高次幂项,将原始特征转化为多项式特征。这种方法可以用于提高分类和回归模型的性能。通过PolynomialFeatures类或FunctionTransformer类,我们可以灵活地根据需求生成不同次数的多项式特征。
