您的位置:首页 > 其它

多变量线性回归程序实现

2014-06-27 17:46 288 查看

第一步:变量归一化

用函数mean和std求均值和标准差

[cpp]
view plaincopyprint?





mu = mean(X);
sigma = std(X);
for i=1:n
X_norm(:,i) = (X_norm(:,i) - mu(i)) ./ sigma(i);
end

第二步:多变量的代价函数计算法

[cpp]
view plaincopyprint?





J = (theta'*X'-y')*(X*theta-y)/(2*m);

第三步:多变量的梯度下降法求θ

[cpp]
view plaincopyprint?





for iter = 1:num_iters

J_history(iter) = computeCostMulti(X, y, theta);

end

第四步:选取不同的学习速率α,观察代价函数J随迭代量的变化

α=0.001



α=0.01



α=0.1



α=1



α=10



第五步:常规方程法求θ

[cpp]
view plaincopyprint?





theta = pinv(X'*X)*X'*y;

第六步:用两种方法得到的θ分别检验

注意:常规方程法不需要用变量归一化处理

结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: