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

标签 python matrix julia

使用 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/

相关文章:

python - 如何查找列表中所有出现的多个元素?

python - 为什么不需要静态方法装饰器?

python - 为什么 Python 字典不统一?

检查矩阵形状的算法

julia - 如何在 Julia 数据框中删除/删除空行和 NaN?

julia - 如何根据julia版本指定julia项目使用不同版本的JuMP

python - 根据条件更改数据框行值的更快方法

r - 仅更改ggplot2中热图上三角矩阵的颜色

java - 包含相同值的 HashMap

dataframe - Query.jl - 创建一个新列并立即使用