Help for linear regression
Mostrar comentarios más antiguos
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 comentarios
Walter Roberson
el 20 de Mayo de 2012
At first look this Question appears to be a continuation of the existing (and still active) Question http://www.mathworks.com/matlabcentral/answers/38831-error-in-gradient-descent-algorithm-code
If it is then you should edit this current information into the existing Question and then delete this one.
b
el 20 de Mayo de 2012
Walter Roberson
el 20 de Mayo de 2012
What is the purpose of your "for inner_j=1:n" ? That loop appears to just do the same thing each time through.
b
el 20 de Mayo de 2012
Walter Roberson
el 21 de Mayo de 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 .
Respuesta aceptada
Más respuestas (1)
b
el 20 de Mayo de 2012
Categorías
Más información sobre MATLAB en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!