如何对 3 维数据 (x,y,z) 执行多项式特征和线性回归?

问题描述

我需要帮助对 3 维数据执行多项式特征并执行线性回归以在 3 维多项式上创建最佳拟合线。

我有一个随机数据框,其中 x、y 和 z 作为形成多项式散点图的列。 X 和 Y 是相似的值,而 z 则大不相同。 示例:

X=(-3,9,-20,-8,-14)
Y=(-2,8,-19,-13)
Z=(-960,110,4867,-149,1493)

我已经为 2 维数据而不是 3d 做了这个。

poly=polynomialFeatures(degree=2,include_bias=False)
X_poly=poly.fit_transform(X.reshape(-1,1)) 
X_poly[0]

但是,当我有 x、y 和 z 时如何处理数据?我需要执行 poly.fit_transform x 和 y 吗?

接下来我做了线性回归

from sklearn.linear_model import LinearRegression

LinReg = LinearRegression()
LinReg.fit(X_poly,z)

然后,当我为 x 和 y 创建测试数据并对 z 执行预测方法时,结果线是线性的,而不是多项式。

任何帮助将不胜感激。

解决方法

PolynomialFeaturesfit_transform() 方法需要 xy 时,这里的 x 是特征的 n 维数组,y是可选的目标值。在您的情况下,我会执行以下操作:

X=(-3,9,-20,-8,-14)
Y=(-2,8,-19,-13)
Z=(-960,110,4867,-149,1493)

foo = np.array([X,Y,Z])
foo = foo.transpose() # This transposes the array to bring it to shape (n,3)
poly = PolynomialFeatures(3)
poly.fit_transform(foo)

完成此操作后,您可以使用 fit_transform(foo)

,

我终于明白了。我需要通过多项式特征传递仅包含 x 和 y 的 DataFrame,然后在 linreg.fit() 中使用 XY_poly 和 z。这将为我接下来的步骤训练模型,以创建多项式的最佳拟合线。