gpt4 book ai didi

matlab - matlab中多变量线性回归,公式和代码不匹配

转载 作者:行者123 更新时间:2023-11-30 09:38:13 25 4
gpt4 key购买 nike

我有以下数据集:

X

X =

1.0000 0.1300 -0.2237
1.0000 -0.5042 -0.2237
1.0000 0.5025 -0.2237
1.0000 -0.7357 -1.5378
1.0000 1.2575 1.0904
1.0000 -0.0197 1.0904
1.0000 -0.5872 -0.2237
1.0000 -0.7219 -0.2237
1.0000 -0.7810 -0.2237
1.0000 -0.6376 -0.2237
1.0000 -0.0764 1.0904
1.0000 -0.0009 -0.2237
1.0000 -0.1393 -0.2237
1.0000 3.1173 2.4045
1.0000 -0.9220 -0.2237
1.0000 0.3766 1.0904
1.0000 -0.8565 -1.5378
1.0000 -0.9622 -0.2237
1.0000 0.7655 1.0904
1.0000 1.2965 1.0904
1.0000 -0.2940 -0.2237
1.0000 -0.1418 -1.5378
1.0000 -0.4992 -0.2237
1.0000 -0.0487 1.0904
1.0000 2.3774 -0.2237
1.0000 -1.1334 -0.2237
1.0000 -0.6829 -0.2237
1.0000 0.6610 -0.2237
1.0000 0.2508 -0.2237
1.0000 0.8007 -0.2237
1.0000 -0.2034 -1.5378
1.0000 -1.2592 -2.8519
1.0000 0.0495 1.0904
1.0000 1.4299 -0.2237
1.0000 -0.2387 1.0904
1.0000 -0.7093 -0.2237
1.0000 -0.9584 -0.2237
1.0000 0.1652 1.0904
1.0000 2.7864 1.0904
1.0000 0.2030 1.0904
1.0000 -0.4237 -1.5378
1.0000 0.2986 -0.2237
1.0000 0.7126 1.0904
1.0000 -1.0075 -0.2237
1.0000 -1.4454 -1.5378
1.0000 -0.1871 1.0904
1.0000 -1.0037 -0.2237

西塔

0
0
0

y =

399900
329900
369000
232000
539900
299900
314900
198999
212000
242500
239999
347000
329999
699900
259900
449900
299900
199900
499998
599000
252900
255000
242900
259900
573900
249900
464500
469000
475000
299900
349900
169900
314900
579900
285900
249900
229900
345000
549000
287000
368500
329900
314000
299000
179900
299900
239500

X集合代表多变量回归的值,第一列代表X0,第二列代表X1;等等。

实现公式是这样的:

enter image description here

我已经实现了一个 matlab 代码,它是:

for i=1:size(theta,1)
h=X*theta;
sumE=sum((h-y).*X(:,i));
theta(i)=theta(i)-alpha*(1/m)*sumE;
end

它位于一个从 1 到 n 次迭代的 for 循环中(m 的值不相关,例如可以设置为 40)。问题是,即使代码有效并且结果是预期的,但当我将其提交给在线检查程序时,我的结果似乎是错误的。原因是我应该同时更新 theta。

我从互联网上得到了以下Matlab代码:

h = X*theta;
theta = theta - alpha / m * (X'*(h - y));

当我运行互联网解决方案时,它给出的答案几乎与我的相同,只是小数点后第六位有细微的差别。当我向在线程序提交该答案时,它被完全接受,但我想知道求和结果去哪里了?公式中的 明确表示求和,这在互联网解决方案中已不再存在。也许这两个代码都很好,但我不知道互联网作者是否做了一些线性代数的技巧。有什么帮助吗?

谢谢

最佳答案

我不确定我是否理解你的问题,但你从互联网上复制的公式是 X'(h-y)。注意X后面有一个转置信号!所以,这是一个矩阵乘积。您的总和(您的循环)将被该矩阵乘积替换。

关于matlab - matlab中多变量线性回归,公式和代码不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22173551/

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