我们从上一篇博客中知道了关于单变量线性回归的相关问题,例如:什么是回归,什么是代价函数,什么是梯度下降法。

  本节我们讲一下多变量线性回归。依然拿房价来举例,现在我们对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为(x0 ,x1 ,...,xn )。

  增添更多特征后,我们引入一系列新的注释:

  假设函数 h 表示为:

  这个公式中有 n+1个参数和 n 个变量,为了使得公式能够简化一些,引入x0 = 1,则公

式转化为:

  此时模型中的参数是一个 n+1维 的向量,任何一个训练实例也都是 n+1维的向量,特
征矩阵X的维度是m*(n+1)。因此公式可以简化为:

  和单变量线性回归类似,在多变量线性回归中,构建一个代价函数,也是所有建模误差的平方和,即:。其中

  使用梯度下降算法为:

  代码示例:

def computeCost(X, y, theta):
inner = np.power(((X * theta.T) - y), 2)
return np.sum(inner) / (2 * len(X))

  在多变量中有个问题,就是每个变量的取值范围不是一样的,比如 一套房子的房间数量大概是 0-5, 而尺寸大约为 0-200平方米,如果以上述的两个取值范围代入代价函数进行计算的话,整个计算权重就会偏移,所以我们把所有变量的取值范围归一到 [-1,1]之间,那么 把变量的取值范围归一的步骤就叫 特征缩放。对于有些数据可能需要平方或者是三次方的操作,我们也可以归一化,把三次方去掉,从而转化为线性回归。特征缩放 可以加快梯度下降。

  对于学习率,梯度下降算法的每次迭代受到学习率的影响,如果学习率

最新文章

  1. [LeetCode] Super Ugly Number 超级丑陋数
  2. .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(三)
  3. VMWare虚拟机NAT上网方法 亲测可用
  4. 分享.NET系统开发过程中积累的扩展方法
  5. maven参考文章推荐
  6. (三)openwrt主Makefile解析
  7. 夺命雷公狗---DEDECMS----33dedecms自定义搜索以及分页功能完成
  8. jQuery的jsonp跨域是这么回事.
  9. Web Service学习之七:CXF拦截器
  10. Quartz Scheduler(2.2.1) - Usage of Calendars
  11. DEDECMS中,arclist标签
  12. cocoa pods
  13. Git的思想和基本工作原理
  14. 表单提交复选框(checkbox)注意事项
  15. Scrapyd部署爬虫
  16. 解决虚拟机下安装CentOS无法上网
  17. 用xstart远程连接linux图形用户界面
  18. python全栈开发 * 12 知识点汇总 * 180530
  19. 跑 vue 项目
  20. [翻译]使用VH和VW实现真正的流体排版

热门文章

  1. 通过 GraalVM 将 Java 程序编译成本地机器码!
  2. 20190713_发布网站的时候报错:无法完成向远程代理 URL 发送请求 基础连接已经关闭 发送时发生错误
  3. PyQt(Python+Qt)学习随笔:gridLayout的layoutRowStretch和layoutColumnStretch属性
  4. matplotlib 绘制多个图——两种方法
  5. numpy 中的堆叠 stack
  6. 学习一下 SpringCloud (一)-- 从单体架构到微服务架构、代码拆分(maven 聚合)
  7. javascript中 fn() 和 return fn() 的区别
  8. 笔记-Recursive Queries
  9. linux 下指定配置文件安装mongodb
  10. Electron安装打包指南