MATLAB Answers

What is wrong with this linear regression code ?

4 views (last 30 days)
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;

Accepted Answer

Diwakar Ravichandran
Diwakar Ravichandran on 17 Jul 2018
Edited: Diwakar Ravichandran on 17 Jul 2018
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!
  1 Comment
Hassan Ibrahim
Hassan Ibrahim on 19 Jul 2018
Thanks for the help. When I tried to use sum function everything worked as expected.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by