【发布时间】:2018-12-19 06:29:56
【问题描述】:
延伸至:scikit learn coefficients polynomialfeatures
为 python 进行多元多项式回归的简单方法是什么?
比如说,我们有 N 个样本,每个样本有 3 个特征,每个样本有 40 个(当然也可以是任意数字,但在我的例子中是 40 个)响应变量。我们想要制作一个将 3 个自变量与 40 个响应变量相关联的函数。为此,我们在 N-1 个样本上训练一个多项式模型,并估计剩余一个样本的 40 个响应变量。自变量(X)和响应变量(y)训练和测试数据的维度:
X_train = [(N-1) * 3], y_train = [(N-1) * 40], X_test = [1 * 3], y_test = [1 * 40]
正如我所料,这种方法应该会产生:
y = intercept + a x1 + b x1^2 + c x2 + d x2^2 + e x3 + f x3^3 + g x1 x2 + h x1 x3 + i x2 x3
总共有 9 个系数加上每个样本的截距来描述多项式。如果我使用 David Maust 早在 2015 年提出的方法:
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import *
model = make_pipeline(PolynomialFeatures(degree=2),LinearRegression())
y_poly = model.fit(X_train,y_train)
coefficients = model.steps[1][1].coef_
intercepts = model.steps[1][1].intercept_
coefficients.shape
[Output: (40, 10)]
对于每个响应变量,看起来我们最终得到了 10 个系数 + 一个截距,这比我预期的多一个系数。因此,我不清楚这些系数的含义以及如何组成描述我们的响应变量的多项式。我真的希望 StackOverflow 可以帮助我!希望我能很好地定义我的问题。
【问题讨论】:
标签: python python-3.x jupyter-notebook