首页 > 解决方案 > Scikit-learn PolynomialFeatures 背后的公式是什么?

问题描述

每当我使用 Sklearn 的多项式特征并通过此代码转换“X”值使其成为多项式时,

在此之前我的 X 值是:-

[[ 1 11]
 [ 2 12]
 [ 3 13]
 [ 4 14]
 [ 5 15]
 [ 6 16]
 [ 7 17]
 [ 8 18]
 [ 9 19]
 [10 20]]

注意:它有多个 X 值,这意味着它有多个自变量

poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)
print(X_poly)

Sklearn 正在返回这个矩阵,除了具有所有平方值之外,该矩阵还具有更多列,

[[  1.   1.  11.   1.  11. 121.]
 [  1.   2.  12.   4.  24. 144.]
 [  1.   3.  13.   9.  39. 169.]
 [  1.   4.  14.  16.  56. 196.]
 [  1.   5.  15.  25.  75. 225.]
 [  1.   6.  16.  36.  96. 256.]
 [  1.   7.  17.  49. 119. 289.]
 [  1.   8.  18.  64. 144. 324.]
 [  1.   9.  19.  81. 171. 361.]
 [  1.  10.  20. 100. 200. 400.]]

当我在网上搜索我的问题时,我已经看到了这个 Stackoverflow 答案https://stackoverflow.com/a/51906400/12188405 。

那么任何人都可以告诉我一个通用公式或一个python代码,它可以分别返回该矩阵到任何度数值吗?简而言之,我想制作一个 python 程序,它可以使用一个度数(可以是从 0 到无穷大的任何值)的参数,它会返回我提供的类似矩阵的 Sklearn。

标签: pythonmathscikit-learn

解决方案


我建议您阅读此链接中的 Sklearn PolynomialFeatures 的源代码。

它有两种不同的选择:

  1. 仅交互=真

    • 组合('ABCD', 2) AB AC AD BC BD CD
  2. 仅交互=假

    • combination_with_replacement('ABCD', 2) AA AB AC AD BB BC BD CC CD DD

第一个使用itertools 包的combinations 方法,第二个使用combinations_with_replacement 来创建新功能。


推荐阅读