多变量线性回归程序实现

来源:互联网 发布:ubuntu在shell打开终端 编辑:程序博客网 时间:2024/06/06 11:14

第一步:变量归一化

用函数mean和std求均值和标准差
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. mu = mean(X);  
  2. sigma = std(X);  
  3. for i=1:n  
  4.     X_norm(:,i) = (X_norm(:,i) - mu(i)) ./ sigma(i);  
  5. end  

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

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. J = (theta'*X'-y')*(X*theta-y)/(2*m);  

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

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. for iter = 1:num_iters  
  2.   
  3.     J_history(iter) = computeCostMulti(X, y, theta);  
  4.   
  5. end  


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

α=0.001
α=0.01

α=0.1

α=1

α=10

第五步:常规方程法求θ

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. theta = pinv(X'*X)*X'*y;  


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

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

结果:

0 0
原创粉丝点击