What is wrong with this linear regression code ?
1 次查看(过去 30 天)
显示 更早的评论
The problem is in calculating term_0 and term_1, I tried to search for the error but found nothing useful.
syms k;
x = [100, 120, 130, 140, 150]; %area of the house
w = 7000; %cost/meter square
y = w * x; %price of the house
t0 = 0; %initialize theta as zero
t1 = 0; %initialize theta as zero
a = 0.8; %setting learning rate(alpha)
m = 5;
term_0 = (a/m) * symsum(t0 + t1*x(k) - y(k),k, 0, m);
term_1 = (a/m) * symsum((t0 + t1*x(k) - y(k)) * x(k),k, 0, m);
%While loop to get the required theta to minimize cost function
while True
temp0 = t0 - term_0;
temp1 = t1 - term_1;
if temp0 == t0 && temp1 == t1
break;
end
t0 = temp0;
t1 = temp1;
end
%calculating the prediction function and plotting the results
h = t0 + t1*x;
hold on;
plot(x, y,'xb');
plot(x, h, 'r');
hold off;
0 个评论
采纳的回答
Diwakar Ravichandran
2018-7-17
编辑:Diwakar Ravichandran
2018-7-17
Hi Hassan, As I tried to reproduce the same error, I noticed that you are trying to use the variable 'k' as a index. This is not possible. As the function symsum is a single variable function. The documentation for symsum is as follows:
Also to obtain the sum of the matrix, you can directly store the value using the sum function of matlab. Its documentation is as follows:
One other thing to note, MATLAB has all of its indices from 1. Not from 0. So I would suggest you to use vectorization for your problem.
Hope this helps,
Cheers!
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!