# What is wrong with this linear regression code ?

4 views (last 30 days)
Hassan Ibrahim on 16 Jul 2018
Commented: Hassan Ibrahim on 19 Jul 2018
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;

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

### Community Treasure Hunt

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

Start Hunting!

Translated by