zoukankan      html  css  js  c++  java
  • 第五十篇 入门机器学习——线性回归(Linear Regression)

    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方法,可以直接获取预测准确率,完整的业务逻辑如下:

  • 相关阅读:
    .NetCore 部署到IIS上的问题
    泛型(EF)增删改查
    Ef数据GroupBy多字段查询Vb.net与c#参考
    WEBAPI 最近更新项目时 服务器总是提示:An error has occurred.
    SQL SERVER 语法
    Fonour.AspnetCore 生成SQL SERVER数据库
    Windows10出现打开EXE应用程序错误
    jQuery实现DOM加载方法源码分析
    前端面试高频题:删除数组重复元素的多种方法
    Mac 下使用homebrew 安装node后全局安装找不到问题
  • 原文地址:https://www.cnblogs.com/xuezou/p/9336699.html
Copyright © 2011-2022 走看看