No.1. 线性回归算法的特点

No.2. 分类问题与回归问题的区别

上图中,左侧为分类问题,右侧为回归问题。左侧图中,横轴和纵轴表示的都是样本的特征,用不同的颜色来作为输出标记,表示不同的种类;左侧图中,只有横轴表示的是样本特征,纵轴用来作为输出标记,这是因为回归问题所预测的是一个连续的数值,无法用离散的几种颜色来表示,它需要占据一个坐标轴的空间。在回归问题中,如果需要考虑两个样本特征,那就必须在三维空间中进行观察。
 
No.3. 简单线性回归与多元线性回归
样本特征只有一个的线性回归,就称之为简单线性回归;样本特征有多个的线性回归,就称之为多元线性回归。
 
No.4. 简单线性回归就是要找一条直线,这条直线要能最大程度地拟合样本特征点,这条直线的一般性表达式为:y=ax+b,其中,a 表示直线的斜率,b 表示直线的截距。对于任意一个样本点 i ,会有一个对应的样本特征 x(i),以及一个输出标记 y(i),如果我们确定了这条直线的两个参数 a 和 b 的话,我们就可以将 x(i) 这个特征值代入到直线方程 y=ax+b中,得到特征值 x(i) 的输出标记的预测值,表示如下:

当然这个输出标记的预测值与真实值之间存在一定的差距,我们需要想办法使这个差距尽可能小。
 
No.5. 求解简单线性回归的过程大致如下:

No.6. 最小二乘法的"套路"

No.7. 实现一个简单线性规划

No.8. 将上述逻辑封装到一个SimpleLinearRegression1类中

No.9. 调用封装好的类

No.10. 向量化运算
上面我们在计算参数 a 时使用了for循环,相较于for循环,向量之间相乘的效率要高很多,因此我们需要改进参数 a 的计算逻辑,采用向量化运算来提升性能。
将类SimpleLinearRegression1中有关计算参数 a 的业务逻辑修改为如下,得到类SimpleLinearRegression2:

简单调用类SimpleLinearRegression2:

No.11. 简单测试for循环和向量化运算的性能差异

No.12. 衡量回归算法好坏的指标

No.13. 用sklearn提供的波士顿房价数据集来实际衡量一下回归算法的好坏

准备工作

查看数据集的描述信息

根据上面的信息,该数据集共有506个样本实例,每个样本共有13个特征

我们本次只测试简单线性回归,因此仅选取一个特征进行研究,选取'RM',即房间数量这一特征

'RM'这个特征的索引为5,我们所选取的数据如下:

在上图中,纵坐标50的地方有很多点散列,这个很可能是数据上限造成的,我们需要剔除掉这些点。

切分数据集、计算回归系数、计算误差的过程如下:

No.14. 封装三种误差计算方法的业务逻辑如下:

简单调用测试一下:

No.15. 调用sklearn中的MSE和MAE

No.16. 最好的衡量线性回归的指标R Square

实际计算一下R Square

将其封装到一个函数中

调用一下:

No.17. 最后,再往自定义的SimpleLinearRegression类中添加一个score方法,可以直接获取预测准确率,完整的业务逻辑如下:

第五十篇 入门机器学习——线性回归(Linear Regression)的更多相关文章

  1. 第四十篇 入门机器学习——Numpy.array的基本操作——向量及矩阵的运算

    No.1. Numpy.array相较于Python原生List的性能优势 No.2. 将向量或矩阵中的每个元素 + 1 No.2. 将向量或矩阵中的所有元素 - 1 No.3. 将向量或矩阵中的所有 ...

  2. 机器学习 (一) 单变量线性回归 Linear Regression with One Variable

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang的个人笔 ...

  3. 机器学习 (二) 多变量线性回归 Linear Regression with Multiple Variables

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...

  4. Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable

    原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

  5. 机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables)

    机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables) 同样是预测房价问题  如果有多个特征值 那么这种情况下  假设h表示 ...

  6. 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression

    机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...

  7. 机器学习方法:回归(一):线性回归Linear regression

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 开一个机器学习方法科普系列:做基础回顾之用,学而时习之:也拿出来与大家分享.数学水平有限,只求易懂,学习与工 ...

  8. 通俗理解线性回归(Linear Regression)

    线性回归, 最简单的机器学习算法, 当你看完这篇文章, 你就会发现, 线性回归是多么的简单. 首先, 什么是线性回归. 简单的说, 就是在坐标系中有很多点, 线性回归的目的就是找到一条线使得这些点都在 ...

  9. Ng第二课:单变量线性回归(Linear Regression with One Variable)

    二.单变量线性回归(Linear Regression with One Variable) 2.1  模型表示 2.2  代价函数 2.3  代价函数的直观理解 2.4  梯度下降 2.5  梯度下 ...

随机推荐

  1. 安装TensorFlow失败

    ERROR: Could not find a version that satisfies the requirement tensorflow==2.1.0 (from versions: non ...

  2. 刷题78. Subsets

    一.题目说明 题目78. Subsets,给一列整数,求所有可能的子集.题目难度是Medium! 二.我的解答 这个题目,前面做过一个类似的,相当于求闭包: 刷题22. Generate Parent ...

  3. C# WinForm MessageBox.Show显示在窗体中间

    一.新建MessageBoxEx类,并添加以下代码. using System; using System.Windows.Forms; using System.Text; using System ...

  4. 案例-pyqt进度条案例

    import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import ...

  5. CSS标题线(删除线贯穿线效果)实现之一二

    缘起 其实看到这个问题,心里已经默默把代码已经码好了~,不就想下面这样嘛:JSBIN代码示例 嗯,是的,我们日常确实基本上就是用的这种方式,也没啥问题呀~,来个背景色定下位就欧拉欧拉的了. 不过,因为 ...

  6. ng-项目结构

    ng启动过程 目录结构 . ├── e2e 端到端测试(暂且不关心) ├── node_modules npm安装的第三方包 ├── src 存放业务源码 ├── .angular-cli.json ...

  7. exiftool生成XMP文件方法

    ExifTool是一个独立于平台的Perl库,另外还有一个命令行应用程序,用于读取,编写和编辑各种文件中的元信息.ExifTool支持许多不同的元数据格式,包括EXIF,Gps,IPTC,XMP,JF ...

  8. gulp常用插件之gulp-postcss使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 ** gulp-postcss**这是一款通过多个插件通过管道传递CSS,但是仅解析一次CSS. 更多使用文档请点击访问gulp-postcss工 ...

  9. H5_0009:关于HTML5中Canvas的宽、高设置问题

    关于HTML5中Canvas的宽.高设置问题 Canvas元素默认宽 300px, 高 150px, 设置其宽高可以使用如下方法(不会被拉伸): 方法一:        <canvas widt ...

  10. C#依赖注入 简体demo

      class Program { static void Main(string[] args) { Dal dal = new MySql(); dal.Add(); Dal dal1 = new ...