PolynomialFeature的介绍(官网原话)
class sklearn.preprocessing.PolynomialFeatures(degree=2, *, interaction_only=False, include_bias=True, order='C')[source]
Generate polynomial and interaction features.
Generate a new feature matrix consisting of all polynomial combinations of the features with degree less than or equal to the specified degree. For example, if an input sample is two dimensional and of the form [a, b], the degree-2 polynomial features are [1, a, b, a^2, ab, b^2].
简单来说就是这个类是在Sklearn preprocessing模块下的用于生成所有的多项式特征,包括输入的高次项
通过传入degree,interaction_only=False(默认), include_bias=True(默认),来确定生成的多项式的复杂程度,例如degree=2,多项式特征包括1, a, b, a^2, ab, b^2。
注:interaction_only是sklearn.preprocessing.PolynomialFeatures类中的一个参数,用于控制是否只生成交互特征。
当interaction_only设置为False时(默认值),PolynomialFeatures将生成所有的多项式特征,包括输入特征的高次方。
举个例子,假设有两个输入特征 x[0] 和 x[1],当 interaction_only=False 时,PolynomialFeatures 将生成以下多项式特征:
1.x[0]
2.x[1]
3.x[0] * x[1]
4.x[0] ** 2
5.x[1] ** 2
6.x[0] ** 2 * x[1]
7.…
其中,x[0] ** 2 和 x[1] ** 2 表示原始特征 x[0] 和 x[1] 的平方项,x[0] ** 2 * x[1] 表示原始特征 x[0] 的平方项与 x[1] 的乘积项。
但是,当 interaction_only=True 时,PolynomialFeatures 将排除高次方的同一输入特征,只生成交互特征。即,只有原始特征和它们的乘积项会被生成。在上述例子中,当 interaction_only=True 时,PolynomialFeatures 将生成以下特征:
8.x[0]
9.x[1]
10.x[0] * x[1]
x[0] ** 2、x[1] ** 2 和 x[0] ** 2 * x[1] 被排除,因为它们是相同输入特征的高次方项。
通过使用 interaction_only 参数,您可以根据需要选择生成多项式特征的方式。如果只关注交互特征而不考虑高次方项,将 interaction_only 设置为 True 可以减少特征的数量和复杂性。
注:polynomial中必须先加上模型训练函数
fit(X, y)和fit_transform(X, y)都是用于对模型进行训练或数据转换的方法,但它们有一些区别。
1.fit(X, y)方法:这个方法主要用于对模型进行训练,其中X表示输入特征,y表示目标变量(如果是监督学习任务)。该方法将根据提供的数据进行模型参数的学习和调整,但不会对数据进行转换。在训练过程中,模型会根据输入特征和目标变量之间的关系进行学习,并找到最佳的模型参数。
2.fit_transform(X, y)方法:这个方法主要用于对数据进行转换。它首先根据提供的数据对转换器(如scikit-learn中的transformer类)进行拟合(fit)操作,然后使用学到的转换规则对数据进行转换(transform)。此方法适用于需要同时学习和应用数据转换的情况,以便节省时间和代码量。通常,转换器的拟合过程会在fit_transform(X, y)中进行,然后立即对数据进行转换。
总结来说,fit(X, y)用于训练模型,而fit_transform(X, y)用于拟合并转换数据,常见于需要对数据进行预处理或特征工程的情况。选择哪种方法取决于任务需求和具体情况。