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

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. 机器学习线性回归算法实验报告_机器学习之简单线性回归

    为了利用机器学习进行简单的线性回归,先理解机器学习和线性回归的概念,然后通过案例进行机器学习.本文主要目录如下: 一.机器学习的概念 二.线性回归的概念 三.机器学习线性回归模型 (一)导入数据集 ( ...

  2. 机器学习线性回归算法实验报告_从零实现机器学习算法(九)线性回归

    1. 回归简介 在客观世界中普遍存在着变量与变量之间的关系.变量之间的关系一般可以分为确定关系和不确定关系.确定关系是指变量之间的关系可以通过函数关系来表达.非确定关系即所谓的相关关系.而回归分析是研 ...

  3. python手写数字识别实验报告_机器学习python实战之手写数字识别

    看了上一篇内容之后,相信对K近邻算法有了一个清晰的认识,今天的内容--手写数字识别是对上一篇内容的延续,这里也是为了自己能更熟练的掌握k-NN算法. 我们有大约2000个训练样本和1000个左右测试样 ...

  4. 动态规划算法实验报告_强化学习之动态规划算法

    如今的强化学习研究大体分为了两个研究学派:一个是以Sutton,Sliver等人为代表的value-based学派,他们主要从值函数近似角度入手去研究强化学习,这也是强化学习早期最初发展起来时沿用的路 ...

  5. 数据结构排序算法实验报告_数据结构与算法-堆排序

    堆排序 堆排序是指利用堆这种数据结构所设计的一种排序算法.堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子节点的键值或索引总是小于(或者大于)它的父节点,堆排序的时间复杂度为O(nlogn).( ...

  6. 数据结构排序算法实验报告_[数据结构与算法系列]排序算法(二)

    我的上一篇文章向大家介绍了排序算法中的冒泡排序.插入排序和选择排序.它们都是平均时间复杂度为 O(n^2) 的排序算法,同时还为大家讲解了什么是原地排序和什么是排序的稳定性.下图是这三种算法的比较,不 ...

  7. 动态规划算法实验报告_搞懂这几点,动态规划算法就是那么简单

    动态规划(Dynamic programming,简称DP),是大家都觉得比较难以掌握的算法.为了应付面试,我们经常会背诵一下斐波那楔数列或者背包问题的源码,其实,只要理解了思想,掌握基本的模型,然后 ...

  8. 作业1:ID3 算法实验报告

    作业1:ID3 算法实验报告 1. 算法介绍 信息增益:特征 A 对训练数据集 D 的信息增益 g(D, A),定义为集合 D 的经验熵 H(D) 与特征 A 给定条件下 D 的讲演条件熵 H(D|A ...

  9. java文件加密解密实验报告_《网络信息安全技术》_实验报告_破译vigenamp#232;re_密码加密的密文...

    <<网络信息安全技术>_实验报告_破译vigen&amp#232;re_密码加密的密文>由会员分享,可在线阅读,更多相关<<网络信息安全技术>_实验报 ...

最新文章

  1. Service Worker
  2. 【干货】图神经网络的十大学习资源分享
  3. MySql - 索引
  4. html5的form如何使用方法,HTML5 FormData方法介绍
  5. 部署Vista(7)——创建一个最基本的应答文件
  6. ARCHPR4.54破解版
  7. SqlServer导入Excel文件数据
  8. 恢复AndroidStudio中误删除的文件
  9. Ubuntu Linux系统Google日语输入法跨平台版Mozc安装笔记
  10. day06ViewPager
  11. 基于CPT构建网络,熟悉各层协议
  12. 北斗三号频点_北斗三号将为手机用户带来更好用户体验
  13. iview table点击单元格事件
  14. python 在指定位置显示图片并调整窗口大小(或图片大小)
  15. 安装Visio 2013与原本的office冲突的最终解决方案
  16. linux什么意思中文翻译,linux中文
  17. 字蛛压缩ttf字体(前端常用)
  18. 改造ie老项目爬坑之showModalDialog
  19. 公司组装服务器无法识别硬盘问题
  20. linux续行符号,51CTO博客-专业IT技术博客创作平台-技术成就梦想

热门文章

  1. IBM ServerGuide 9.21
  2. 论文阅读笔记markdown模板
  3. 网易免费企业邮支持POP3/SMTP服务器
  4. ADE-关于aps多线程仿真的若干问题
  5. 大学综评自招面试 计算机专业,【荔枝高校大会】自招综评面试6月16日扎堆举行,这些准备工作要做好!...
  6. Hadoop02---HDFS基础(HDFS原理 java客户端).md
  7. Azure - AD B2C自定义策略和身份体验框架
  8. 采购申请、采购订单、供应商
  9. 计算机正确的按键手法游戏,原神pc操作方法 基础按键与常见动作教程
  10. 20款常用的在线配色工具