吴恩达机器学习线性回归练习题:多变量线性回归(octave实现)
2018-12-28 17:18
1086 查看
单变量的线性回归模型就不再细说了,这里只记录多变量线性回归中几个需要实现的步骤和函数,其他内容在课程中的讲义和习题中都有详细描述。
- 特征标准化,对应featureNormalize函数 作用:消除不同特征间的量纲,提高梯度下降的速度,缩短收敛时间
- 需要在featureNormalize.m文件中填充的代码:
[code]mu = mean(X); % 计算每个特征的均值 sigma = std(X); % 计算每个特征的标准差 X_norm = (X - mu) ./ sigma; % 计算标准化后的特征矩阵
- 多变量损失函数,对应computeCostMulti函数 作用:评估误差
- 损失函数定义: ,其中:
- 这个公式可以有多种方式实现,这里根据习题中的介绍,使用矩阵计算
- 需要在computeCostMulti.m中填充的代码:
[code]J = (X * theta - y)' * (X * theta - y) / (2 * m); % 在进行矩阵计算的过程中,很自然的就实现了求和,也可以使用其他方式实现,比如:J = sum(power(X * theta - y, 2)) / (2 * m);
- 梯度下降 作用:最小化损失函数 ,得到 中的所有参数 ,从而求得最佳拟合函数
- 更新规则:
- 梯度下降中迭代更新 的实现方式有很多,这里采用矩阵计算的方式,一次计算,更新所有的
- 需要在gradientDescentMulti.m中填充的代码:
[code]theta = theta - ((X * theta -y)' * X)' * (alpha / m);
- 正规方程 作用:不通过梯度下降的方式计算出 中的所有参数 ,从而求得最佳拟合函数
- 实现公式:
- 根据公式直接实现即可
- 需要在normalEqn.m中填充的代码:
[code]theta = inv(X' * X) * X' * y; % 如果X' * X是奇异的,则需要使用pinv函数计算伪逆
到这里,所有的函数中确实的代码部分都完成了填充,但是,在主程序中,还有两个预测价格的地方需要填充代码,分别是:
- 在通过梯度下降方式计算出所有的 后,要填充一下代码进行1650 sq-ft, 3 br 房屋的价格预测:
[code]x_pre = [1650 3]; % 构建样本 x_pre_norm = (x_pre - mu) ./ sigma; % 标准化数据 x_pre_norm = [ones(size(x_pre, 1)), x_pre_norm]; % 添加一个为1的特征 price = x_pre_norm * theta; % 预测房屋价格
- 在通过正规方程计算出所有的 后,要填充一下代码进行1650 sq-ft, 3 br 房屋的价格预测:
[code]x_pre = [1 1650 3]; price = x_pre * theta;
到这里,就已经完成了所有的多变量线性回归,下面是执行主程序ex1_multi的部分结果:
[code]Loading data ... First 10 examples from the dataset: x = [2104 3], y = 399900 x = [1600 3], y = 329900 x = [2400 3], y = 369000 x = [1416 2], y = 232000 x = [3000 4], y = 539900 x = [1985 4], y = 299900 x = [1534 3], y = 314900 x = [1427 3], y = 198999 x = [1380 3], y = 212000 x = [1494 3], y = 242500 Program paused. Press enter to continue. Normalizing Features ... Running gradient descent ... Theta computed from gradient descent: 334302.063993 100087.116006 3673.548451 Predicted price of a 1650 sq-ft, 3 br house (using gradient descent): $289314.620338 Program paused. Press enter to continue. Solving with normal equations... Theta computed from the normal equations: 89597.909543 139.210674 -8738.019112 Predicted price of a 1650 sq-ft, 3 br house (using normal equations): $293081.464335
如果需要已经填充好代码的所有习题文件,请点这里
也可以发邮件至294562919@qq.com
Python实现代码
相关文章推荐
- 吴恩达机器学习线性回归练习题:多变量线性回归(python实现)
- 吴恩达机器学习--单变量线性回归【学习笔记】
- 机器学习入门(6)--(单变量)梯度下降与线性回归
- 机器学习实现线性梯度算实现octave
- 【机器学习-西瓜书】三、线性回归;对数线性回归
- 机器学习实战:单变量线性回归的实现
- 机器学习基础(三十) —— 线性回归、正则化(regularized)线性回归、局部加权线性回归(LWLR)
- 第二周(多变量线性回归 +Matlab使用)-【机器学习-Coursera Machine Learning-吴恩达】
- 多变量线性回归程序实现
- Stanford机器学习网络课程---第三讲(续)Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression
- coursera《机器学习》吴恩达-week2-01 多个变量的线性回归
- 机器学习理论篇之线性回归(python实现)
- Coursera2014 机器学习第一周 单变量线性回归
- 机器学习之线性回归 Linear Regression(二)Python实现
- 单变量线性回归程序实现
- python实现机器学习之多元线性回归
- [置顶] 吴恩达机器学习笔记——指数分布族&广义线性模型&逻辑回归概率模型推导
- [置顶] 【算法 机器学习】MATLAB、R、python三种编程语言实现简单线性回归算法比较
- 机器学习之第一站:线性回归与梯度下降法[一]——原理与实现
- 机器学习之线性回归python实现