gpt4 book ai didi

python - 使用 PolynomialFeatures 和 LinearRegression 拟合更高阶函数

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:11 26 4
gpt4 key购买 nike

在一本书中,我找到了以下代码,它适合二次数据的线性回归:

m = 100
X = 6 * np.random.rand(m, 1) - 3
y = 0.5 * X**2 + X + 2 + np.random.randn(m, 1)
poly_features = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly_features.fit_transform(X)
lin_reg = LinearRegression()
lin_reg.fit(X_poly, y)

enter image description here

但这怎么可能呢?我从documentation知道PolynomialFeatures(degree=2, include_bias=False) 正在创建一个如下所示的数组:

[[X[0],X[0]**2]
[X[1],X[1]**2]
.....
[X[n],X[n]**2]]

但是:LinearRegression 如何拟合这些数据?表示 LinearRegression 在做什么以及其背后的概念是什么。

我很感激任何解释!

最佳答案

二次多项式特征将创建一个如下所示的数组:

   [[1, X[0], X[0]**2]
[1, X[1], X[1]**2]
.....
[1, X[n] ,X[n]**2]]

我们称上面的矩阵为X。然后 LinearRegression 正在寻找 3 个数字 a,b,c 以便向量

X* [[a],[b],[c]] - Y

具有最小可能的均方误差(即上述向量中平方和的平均值)。

请注意,乘积 X* [[a],[b],[c]] 只是矩阵 X 与列向量 的乘积>[a,b,c].T 。结果是一个与 Y 维度相同的向量。

关于您评论中的问题:

  1. 此函数在新的一组特征中是线性的:x, x**2。只需将 x**2 视为模型中的附加功能即可。

  2. 对于您问题中提到的特定数组,LinearRegression 方法正在寻找使和最小化的数字a,b,c

    (a*1+bX[0]+cX[0]**2-Y[0])**2+(a*1+bX[ 1]+cX[1]**2-Y[1])**2+..+(a*1+bX[n]+cX[n ]**2-Y[n])**2

所以它会找到一组这样的数字a,b,c。因此,建议的函数 y=a+b*x+c*x**2 不仅仅基于第一行。相反,它是基于所有行的,因为选择的参数a,b,c是使上面的总和最小的参数,而这个总和涉及所有中的元素行。

  1. 一旦创建了向量x**2,线性回归就将其视为附加特征。你可以给它一个新的名字v=x**2。然后线性回归的形式为 y=a+b*x+c*v,这意味着它在 xv 中是线性的>。该算法不关心您如何创建 v。它只是将 v 视为附加功能。

关于python - 使用 PolynomialFeatures 和 LinearRegression 拟合更高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45090975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com