一、线性回归找到最佳拟合直线

1. 定义

线性回归是通过现有数据,让训练模型生成一个拟合公式,从而计算目标数据的预测值。

在统计学中,线性回归(Linear Regression)是利用称为“线性回归方程”的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。

这种函数是一个或多个称为回归系数的模型参数的线性组合。

  • 只有一个自变量的情况称为简单回归大于一个自变量情况的叫做多元回归。

一个带有一个自变量的线性回归方程代表一条直线。我们需要对线性回归结果进行统计分析。

线性回归利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计方法运用十分广泛。其表达形式为y=x’x+e,e为误差服从均值为 θ 的正态分布。

线性回归假设物证和结果满足线性关系。其实线性关系的表达能力非常强大,每个特征对结果的影响强弱可以由前面的参数体现,而且每个特征变量可以首先映射到一个函数,然后再参与线性计算。这样就可以表达特征与结果之间的非线性关系。

回归属于有监督学习中的一种方法。该方法的核心思想是从连续型统计数据中得到数学模型,然后将该数学模型用于预测或者分类。

该方法处理的数据可以是多维的。

2. 回归与梯度下降

回归在数学上来说是给定一个点集,能够用一条曲线去拟合之。

如果这个曲线是一条直线,那就被称为线性回归;

如果曲线是一条二次曲线,就被称为二次回归。

回归还有很多变种,如:locally weighted 回归、logistic回归等。

举例,weka,做一个房屋价值的评估系统。相关变量可能有:

  • 面积房间数量地段朝向

等。

这些影响房屋价值的变量被称为特征(feature)。

为简单起见,假设我们的房屋feature只有一个——房屋的面积。

准备数据如下:

面积(m^2)销售价钱(万元)12325015032087160102220……

x轴表示面积,y表示售价,则出来一个图:

如果再给定一个面积,要计算售价,可以用一条曲线去尽量拟合这些数据。

一些概念

  • 房屋销售记录表 - 训练集(training set)或者训练数据(training data),是我们流程中输入数据,一般称为x房屋销售价格 - 输出数据,一般称为y拟合的函数(或者称为假设、模型),一般写做y=h(x)训练数据的条目数(#training set),一条训练数据是由一对输入数据和输出数据组成的。输入数据的维度(特征的个数,#features),n

典型的机器学习的过程

我们用X1,X2...Xn去描述feature里面的分量,比如x1=面积,x2=朝向等等,可以做出一个估计函数:

θ 称为参数,在这儿的意思是调整feature中每个分量的影响力,就是到底是房屋的面积更重要两袖清风是房屋的地段更重要。如果令X0=1,就可以用向量的方式来表示了:

我们程序也需要一个机制去评估θ是否比较好,所以说需要对ℎ函数进行评估,一般这个函数称为损失函数(loss function)或者错误函数(error function),描述ℎ函数不好的程度。在下面,做出一个错误函数:

这个错误估计函数是去对x(i)的估计值与真实值y(i)差的平方和作为错误估计函数,前面乘上1/2是为了在求导的时候,这个系数就不见了。

如何调整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法(min square),是一种完全是数学描述的方法,在stanford机器学习开放课最后的部分会推导最小二乘法的公式的来源,这个来很多的机器学习和数学书上都可以找到,下面介绍梯度下降法。

3. 梯度下降法

梯度下降法是按下面的流程来进行的:

  1. 首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量改变θ的值,使得J(θ)按梯度下降的方向进行减少。

4. 回归的一般方法

  1. 收集数据准备数据分析数据训练算法测试算法使用算法

二、Python实现线性回归示例

代码地址

核心代码:

import numpy as npdef loadDataSet(fileName): numFeat = len(open(fileName).readline().split(','))-1 dataMat=[];labelMat = [] fr = open(fileName) for line in fr.readlines(): lineArr = [] print(line) curLine = line.strip().split(',') for i in range(numFeat): lineArr.append(float(curLine[i])) dataMat.append(lineArr) labelMat.append(float(curLine[-1])) return dataMat, labelMat# 回归方程求取函数def fit(x,y): if len(x) != len(y): return numerator = 0.0 denominator = 0.0 x_mean = np.mean(x) y_mean = np.mean(y) for i in range(len(x)): numerator += (x[i]-x_mean)*(y[i]-y_mean) denominator += np.square((x[i]-x_mean)) print('numerator:',numerator,'denominator:',denominator) b0 = numerator/denominator b1 = y_mean - b0*x_mean return b0,b1# 定义预测函数def predit(x,b0,b1): return b0*x + b1

入口文件:

import numpy as npimport regressionfrom matplotlib import pylab as pl# 定义训练数据x, y = regression.loadDataSet('data.txt')# 求取回归方程b0, b1 = regression.fit(x,y)print('Line is:y = %2.0fx + %2.0f'%(b0,b1))# 预测x_test = np.array([1, 1.5, 2, 3, 4])y_test = np.zeros((1, len(x_test)))for i in range(len(x_test)): y_test[0][i] = regression.predit(x_test[i], b0, b1)# 绘制图像xx = np.linspace(0, 5)yy = b0*xx + b1pl.plot(xx, yy, 'k-')pl.scatter(x, y, cmap=pl.cm.Paired)pl.scatter(x_test, y_test[0], cmap=pl.cm.Paired)pl.show()

运行效果:

曲线 线性回归_机器学习笔记 线性回归相关推荐

  1. 机器学习线性回归算法实验报告_机器学习笔记 线性回归

    一.线性回归找到最佳拟合直线 1. 定义 线性回归是通过现有数据,让训练模型生成一个拟合公式,从而计算目标数据的预测值. 在统计学中,线性回归(Linear Regression)是利用称为" ...

  2. opencv机器学习线性回归_机器学习(线性回归(二))

    Lasso与岭回归的同和异 Lasso.岭回归都可以预防模型过拟合 Lasso回归惩罚项为L1正则,岭回归为L2正则 Lasso回归可用来特征选择,岭回归则不能 Lasso回归用坐标下降法求解,岭回归 ...

  3. 机器学习线性回归_机器学习实例--线性回归

    一.问题引入 1.首先明确几个概念 目前三大最常见的机器学习任务: 1.回归问题 2.分类问题 3.聚类问题 Machine learning机器学习是Artificial inteligence的核 ...

  4. Scikit-Learn 机器学习笔记 -- 线性回归、逻辑回归、softmax回归

    Scikit-Learn 机器学习笔记 – 线性回归.逻辑回归.softmax回归 参考文档: handson-ml import numpy as np from matplotlib import ...

  5. 回归预测值预测区间_机器学习之线性回归概述

    线性回归是利用梳理统计学中的回归分析来确定两种或两种以上变量之间相互依赖的定量关系的一种统计分析方法. 线性回归简介 线性回归是一种有监督算法,通常被用于响应预测.分类划分.线性回归的针对的是目标变量 ...

  6. 机器学习笔记——线性回归与逻辑回归

    线性回归是什么: 线性回归是回归问题的一种,模型试图去找到y 与 x 的线性关系同时去预测新输入的输出值.模型会找到一条直线使得图像上的每一个点到这条线的欧式距离之和最小,也就是均方误差(MSE)最小 ...

  7. opencv机器学习线性回归_Python机器学习之?线性回归入门(二)

    线性回归原理介绍 文章目录 机器学习分类 线性回归原理 线性回归定义 线性回归背后矩阵运算 机器学习分类 机器学习的主要任务便是聚焦于两个问题:分类和回归 分类相信大家都不会陌生,生活中会见到很多的应 ...

  8. python网格搜索核函数_机器学习笔记——模型调参利器 GridSearchCV(网格搜索)参数的说明...

    算法 数据结构 机器学习笔记--模型调参利器 GridSearchCV(网格搜索)参数的说明 GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数.但是这个 ...

  9. 多重线性回归 多元线性回归_了解多元线性回归

    多重线性回归 多元线性回归 Video Link 影片连结 We have taken a look at Simple Linear Regression in Episode 4.1 where ...

最新文章

  1. hdu4454 三分 求点到圆,然后在到矩形的最短路
  2. 改善开发进程 微软谈新Visual Studio(zz)
  3. opencv-python将.tif格式的图像转为png格式
  4. volatile关键字解析
  5. Commerce Server 2002 Starter Site and 2006 overview
  6. tcp socket的发送与接收缓冲区
  7. php parse url 中文,php parse_url()函数解析URL用法总结
  8. 数据库基础(1)关系的布尔运算:数据集的并,交,差,补和有效补运算
  9. php swfobject,SWFObject基本用法实例分析_javascript技巧
  10. (二)智能化技术如何赋能能源数字化转型及智慧化应用?
  11. 微信小程序——如何实现账号的注册、登录?
  12. Modularity(模块化)
  13. 微信小程序——简单饮食推荐(四)
  14. PTGUI 720 制作全景图
  15. HighlightingSystem(边缘发光插件)的简单使用(一)
  16. 申请Github学生包(用学生证就行,免教育邮箱)
  17. 2021年10款优质Chrome浏览器插件推荐
  18. 【EVE-NG】模拟器打不开/分不到地址
  19. (带手机版数据同步)未解之谜新闻网类网站源码 奇闻异事网站织梦模板
  20. car-eye 车辆管理开源平台 MCU 系统之 按键扫描处理

热门文章

  1. R语言应用实战系列(四)-Apriori算法的相关内容(附案例源代码)
  2. 咦?奇怪的知识又增加了?以数学建模的方式打开海啸传播模型(附部分matlab源码)
  3. 当前订单不支持只花呗支付是什么意思_1、(跑腿介绍篇)支付宝花呗分期线下推广...
  4. Matplotlib实例教程(二)饼状图
  5. LeetCode-剑指 Offer 14- I. 剪绳子
  6. nginx大量TIME_WAIT的解决办法--转
  7. 跨域post请求实现方案小结--转
  8. 【未来可能用到】关于模型的100个问答-part1
  9. 腾讯内部人士爆与老干妈合作多个环节有漏洞 却没人察觉
  10. 拼多多提交赴美上市招股书 陆奇担任独立董事兼薪酬委员会主席