gpt4 book ai didi

python - 线性回归的正规方程

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:23 24 4
gpt4 key购买 nike

我有以下 X 和 y 矩阵:

enter image description here

我想为此使用正规方程方法计算线性回归方程的最佳值:

theta = inv(X^T * X) * X^T * y

theta 的结果应该是:[188.400,0.3866,-56.128,-92.967,-3.737]

我通过以下方式实现这些步骤:

X=np.matrix([[1,1,1,1],[2104,1416,1534,852],[5,3,3,2],[1,2,2,1],[45,41,30,36]])
y=np.matrix([460,232,315,178])

XT=np.transpose(X)

XTX=XT.dot(X)

inv=np.linalg.inv(XTX)

inv_XT=inv.dot(XT)

theta=inv_XT.dot(y)

print(theta)

但我没有得到想要的结果。相反,它会抛出错误:

Traceback (most recent call last): File "C:/", line 19, in theta=inv_XT.dot(y) ValueError: shapes (4,5) and (1,4) not aligned: 5 (dim 1) != 1 (dim 0)

我做错了什么?

最佳答案

我觉得你把维度弄乱了一点。您的 X 实际上是 XTXTX

试试这个:

In [163]: X=np.matrix([[1,1,1,1],[2104,1416,1534,852],[5,3,3,2],[1,2,2,1],[45,41,30,36]]).T

In [164]: y=np.matrix([460,232,315,178])

In [165]: X
Out[165]:
matrix([[ 1, 2104, 5, 1, 45],
[ 1, 1416, 3, 2, 41],
[ 1, 1534, 3, 2, 30],
[ 1, 852, 2, 1, 36]])

In [166]: XT = X.T

In [167]: np.linalg.inv(XT @ X) @ XT @ y.T
Out[167]:
matrix([[243.4453125 ],
[ -0.47787476],
[268.609375 ],
[ 3.1328125 ],
[ -5.83056641]])

更新:这种方法给出的值更接近您想要的值:

In [197]: (np.linalg.inv(X @ X.T) @ X).T @ y.T
Out[197]:
matrix([[182.27200269],
[ 0.34497234],
[-38.43393186],
[-82.90625955],
[ -3.84484213]])

UPDATE2:最初如何创建正确的矩阵:

In [217]: np.array([[1, 2104, 5, 1, 45],
...: [1, 1416, 3, 2, 41],
...: [1, 1534, 3, 2, 30],
...: [1, 852, 2, 1, 36]])
...:
Out[217]:
array([[ 1, 2104, 5, 1, 45],
[ 1, 1416, 3, 2, 41],
[ 1, 1534, 3, 2, 30],
[ 1, 852, 2, 1, 36]])

关于python - 线性回归的正规方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49347878/

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