使用 sklearn 生成完整的多项式回归公式,而不仅仅是系数?

Generate the full polynomial regression formula, not just coefficients using sklearn?

背景:我正在使用 scikit-learn 进行多项式回归建模。生成回归模型后,您可以获得系数列表。

poly = PolynomialFeatures(degree)
X_ = poly.fit_transform(X)
model = linear_model.LinearRegression(fit_intercept=True)
model.fit(X_, Y_)
print model.coef_

结果:

[ 0.00000000e+00 -3.69049908e+00 9.45845788e-03 4.79401992e+01 1.13710193e+01 2.55613693e+01]

表示Y = 0 + -3.69 X1 + 0.00945 X2 + 47.9 X1^2 + 11.3 X1X2 + 25.5 X2^2

但你第一眼不知道它们代表的是什么词。您必须检查列表以找出哪个是哪个。我希望让计算机打印出整个公式,而不仅仅是系数。

有办法吗?我在 sklearn 中看不到任何可以做到这一点的功能。所以我正在考虑编写一个函数来生成多项式项的有序列表

所以如果我输入 1,则只有 1 个决策变量,多项式项就像 [1, X1]

对于输入 2,它是 [1, X1, X2, X1^2, X1X2, X2^2]。

对于输入 3,它是 [1, X1, X2, X1^2, X1X2, X2^2, X1X3, X2X3, X3^2, X1^3, X1^2 * X2, X1 * X2^2 , .........X3^3]

所以我希望写这个功能。但是我很难弄清楚排名算法。任何人都可以给我一个提示吗?生成列表时是否有我可以遵循的模式?

好的,我自己想出来了。

print poly.powers_

使用这段代码,对于 n 个变量,它看起来像

[[0 0 0 0]
 [1 0 0 0]
 [0 1 0 0]
 [0 0 1 0]
 [0 0 0 1]
 [2 0 0 0]
 [1 1 0 0]
 [1 0 1 0]
 [1 0 0 1]
 [0 2 0 0]
 [0 1 1 0]
 [0 1 0 1]
 [0 0 2 0]
 [0 0 1 1]
 [0 0 0 2]
 [3 0 0 0]
 [2 1 0 0]
 [2 0 1 0]
 [2 0 0 1]
 [1 2 0 0]
 [1 1 1 0]
 [1 1 0 1]
 [1 0 2 0]
 [1 0 1 1]
 [1 0 0 2]
 [0 3 0 0]
 [0 2 1 0]
 [0 2 0 1]
 [0 1 2 0]
 [0 1 1 1]
 [0 1 0 2]
 [0 0 3 0]
 [0 0 2 1]
 [0 0 1 2]
 [0 0 0 3]
 [4 0 0 0]
 [3 1 0 0]
 [3 0 1 0]
 [3 0 0 1]
 [2 2 0 0]
 [2 1 1 0]
 [2 1 0 1]
 [2 0 2 0]
 [2 0 1 1]
 [2 0 0 2]
 [1 3 0 0]
 [1 2 1 0]
 [1 2 0 1]
 [1 1 2 0]
 [1 1 1 1]
 [1 1 0 2]
 [1 0 3 0]
 [1 0 2 1]
 [1 0 1 2]
 [1 0 0 3]
 [0 4 0 0]
 [0 3 1 0]
 [0 3 0 1]
 [0 2 2 0]
 [0 2 1 1]
 [0 2 0 2]
 [0 1 3 0]
 [0 1 2 1]
 [0 1 1 2]
 [0 1 0 3]
 [0 0 4 0]
 [0 0 3 1]
 [0 0 2 2]
 [0 0 1 3]
 [0 0 0 4]]

公式可以在此基础上构建sheet。

我说的不清楚,所以如果有人看到这个帖子有类似的问题,请留言,我可以进一步解释。

查看此页面: