Help for linear regression
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi friends, I have a problem in finding the regression by gradient descent. I coded it.
My code is as shown;
x=[x1 x2 x3 x4 x5];
y=realoutput;
alpha=0.001;
m=length(y);
n=5;
theta_vec=zeros(5,1);
error=zeros(5,1);
itr=100;
for max_iter=1:itr
for j=1:n
sum_theta_vec=0;
for i=1:m
h_theta_v=0;
for inner_j=1:n
h_theta=(x.^i)*theta_vec;
h_theta_v=(h_theta * ones(1,n)).';
y_v= (y * ones(1,n)).';
end
sum_theta_vec= (sum_theta_vec + ((h_theta_v - y_v(i)) * x(:,inner_j).^i));
end
theta_vec=theta_vec(j) - (alpha* 1/m * sum_theta_vec);
end
theta_vec
end
But theta_vec occurs as NaN. Why? Can anybody help me?
Thank you very much.
5 Kommentare
Walter Roberson
am 21 Mai 2012
You did not code an assignment for "inner_j": you coded a "for" loop. The "for" loop ends after the calculation of y_v, and everything in that loop will be done "n" times. After the loop is finished, the loop index variable will have the value it was last assigned, so inner_j will be "n" not 1:n .
Akzeptierte Antwort
Walter Roberson
am 20 Mai 2012
You have m=length(y) . If y is empty then m would be 0. Then when you calculate theta_vec you have 1/m * sum_theta_vec and sum_theta_vec would be 0 because the "for i=1:m" loop would execute 0 times when m is 0. 1/0 * 0 will give you NaN.
0 Kommentare
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Linear Regression finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!