gpt4 book ai didi

python - 使用 Python 与 Julia 进行线性回归的分析解决方案

转载 作者:太空狗 更新时间:2023-10-29 17:40:44 27 4
gpt4 key购买 nike

使用 Andrew Ng 类(class)中的示例(使用正规方程查找线性回归的参数):

使用 Python:

X = np.array([[1, 2104, 5, 1, 45], [1, 1416, 3, 2, 40], [1, 1534, 3, 2, 30], [1, 852, 2, 1, 36]])
y = np.array([[460], [232], [315], [178]])
θ = ((np.linalg.inv(X.T.dot(X))).dot(X.T)).dot(y)
print(θ)

结果:

[[  7.49398438e+02]
[ 1.65405273e-01]
[ -4.68750000e+00]
[ -4.79453125e+01]
[ -5.34570312e+00]]

与 Julia :

X = [1 2104 5 1 45; 1 1416 3 2 40; 1 1534 3 2 30; 1 852 2 1 36]
y = [460; 232; 315; 178]

θ = ((X' * X)^-1) * X' * y

结果:

5-element Array{Float64,1}:
207.867
0.0693359
134.906
-77.0156
-7.81836

此外,当我将 X 乘以 Julia 的——而不是 Python 的——θ 时,我得到的数字接近于 y。

我不知道我做错了什么。谢谢!

最佳答案

使用 X^-1 与伪逆

pinv(X) 对应the pseudo inverseinv(X) 更广泛适用,X^-1 等同于。 Julia 和 Python 都不能很好地使用 inv,但在这种情况下,显然 Julia 做得更好。

但是如果你把表达式改成

julia> z=pinv(X'*X)*X'*y
5-element Array{Float64,1}:
188.4
0.386625
-56.1382
-92.9673
-3.73782

你可以验证 X*z = y

julia> X*z
4-element Array{Float64,1}:
460.0
232.0
315.0
178.0

关于python - 使用 Python 与 Julia 进行线性回归的分析解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30855655/

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