线性回归(一元)算法算法模型(octave,matlab)

程序目的:

以现有的“餐厅利润”以及对应的“城市人口数”作为训练数据,已达到预测在“某一人口数量城市”开设餐厅的“利润额”的目的。

程序概要:

1,导入训练数据并做二维图

2,使用梯度下降计算参数theta(参数为向量,y=theta0+theta1x)  

  • 梯度下降参数设定
  • 代价函数计算;
  • 参数theta计算
  • 在二维图上画出回归直线
线性回归(一元)算法算法模型(octave,matlab)
3,绘制代价函数J的曲面图
线性回归(一元)算法算法模型(octave,matlab)
4,绘制代价函数等高线图
线性回归(一元)算法算法模型(octave,matlab)
5,使用梯度下降计算出的参数thetaGD与使用正规方程(即最小二乘法)计算出的参数thetaNE比较
thetaGD =
  -3.8958
   1.1930
Theta compute with Normal Equation
thetaNE =
  -3.8958
   1.1930
6,分别预测人口数分别为35,000和70,000的两个城市开设餐厅的利润额
For population = 35,000, we predict a profit of 2798.453151
For population = 70,000, we predict a profit of 44554.584935

说明:

1,下述链接为打包程序下载链接。
其中P1为主程序,m1为训练数据,其余为调用子程序。
https://pan.baidu.com/s/1IZmK8JlOYsg7jh0TbjKQJQ
2,该程序仅适用于一元线性问题,多元问题需对程序进行调整。
3,从程序内容可以看出,该程序使用了“梯度下降”和“正规方程”(最小二乘法)两种方法分别计算出了相同的参数theta。但在解决一元或者自变量数量不多的线性回归问题时,正规方程简单很多。但在解决自变量过多的问题时,梯度下降法在运算速度上会有其优势。