使用 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。
我说的不清楚,所以如果有人看到这个帖子有类似的问题,请留言,我可以进一步解释。
查看此页面:
背景:我正在使用 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。
我说的不清楚,所以如果有人看到这个帖子有类似的问题,请留言,我可以进一步解释。
查看此页面: