无法理解sklearn的PolynomialFeatures

需要帮助理解sklearn的PolynomialFeatures。当只使用一个特征时,它运作得很好,但每当我添加多个特征时,它除了输出各特征值的幂次方之外,还会输出数组中的一些其他值。例如:对于这个数组,

X=np.array([[230.1,37.8,69.2]])

当我尝试

X_poly=poly.fit_transform(X)

它输出

[[ 1.00000000e+00 2.30100000e+02 3.78000000e+01 6.92000000e+015.29460100e+04 8.69778000e+03 1.59229200e+04 1.42884000e+032.61576000e+03 4.78864000e+03]]

这里,8.69778000e+03,1.59229200e+04,2.61576000e+03 是什么?


回答:

如果你有特征 [a, b, c],默认的多项式特征(在sklearn中,度数为2)应该是 [1, a, b, c, a^2, b^2, c^2, ab, bc, ca]

2.61576000e+0337.8x62.2=2615,762615,76 = 2.61576000 x 10^3

使用PolynomialFeatures,你可以简单地创建新的特征。这里有一个很好的参考链接。当然,使用PolynomialFeatures也有缺点(如“过拟合”),详见这里

编辑:
使用多项式特征时我们必须小心。计算多项式特征数量的公式是N(n,d)=C(n+d,d),其中n是特征的数量,d是多项式的度数,C是二项式系数(组合)。在我们的案例中,数量是C(3+2,2)=5!/(5-2)!2!=10,但当特征数量或度数增加时,多项式特征会变得过多。例如:

N(100,2)=5151N(100,5)=96560646

因此,在这种情况下,你可能需要应用正则化来惩罚某些权重。算法很可能会开始受到维度灾难的影响(这里也有一个很好的讨论)。

Related Posts

Flatten and back keras

我正在尝试使用自编码器获取简单向量中的值 这是我的代码…

如何按索引访问PyTorch模型参数

如果我的网络有10层,包括偏置项,如何仅通过索引访问第…

Python中多元逻辑回归显示错误

我试图使用逻辑回归进行预测,并使用Python和skl…

在MACOS上安装NLTK

我在我的2015款Mac Pro上尝试安装NLTK,操…

如何在R中将通过RFE选择的变量插入到机器学习模型中?

我想使用递归特征消除方法来选择最重要的特征,然后将这些…

CountVectorizer 错误:ValueError: setting an array element with a sequence

我有一个包含144条学生反馈的数据集,其中有72条正面…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注