一、什么是线性回归

线性回归(或者叫做线性拟合)是最简单的拟合分析方法,概念很简单,先看张图:

通俗的说就是在一系列点中间画一条线,这条线能够代表所有点的特征(或者称之为,关系、发展趋势等等),,目的很明确就是对线性问题进行估计(预测),,当然线性问题也是最简单的规律。

注意:线性不一定是二维空间内的线性问题,可以是N维的

二、线性回归可以用最小二乘法来实现

原理简单的来说就是保证所有点都能到直线最近(x不变,将x带入拟合直线求得长度L1),引用知乎中的一张插图

其中红色线长度和最小,及最小二乘法所求的目的。

推到过程如下(参考原文):(可略过)

1 写出拟合方程

y=a+bxy=a+bx

2 现有样本(x1,y1),(x2,y2)...(xn,yn)(x1,y1),(x2,y2)...(xn,yn)

3 设didi为样本点到拟合线的距离,即误差
di=yi−(a+bxi)di=yi−(a+bxi)

4 设DD为差方和(为什么要取平方前面已说,防止正负相互抵消)
D=∑i=1nd2i=∑i=1n(yi−a−bxi)D=∑i=1ndi2=∑i=1n(yi−a−bxi)

5 根据一阶导数等于0,二阶大于等于0(证明略)求出未知参数
对a求一阶偏导
∂D∂a=∑i=1n2(yi−a−bxi)(−1) =−2∑i=1n(yi−a−bxi) ∂D∂a=∑i=1n2(yi−a−bxi)(−1) =−2∑i=1n(yi−a−bxi) 
=−2(∑i=1nyi−∑i=1na−b∑i=1nxi) =−2(ny¯−na−nbx¯)=−2(∑i=1nyi−∑i=1na−b∑i=1nxi) =−2(ny¯−na−nbx¯)

对b求一阶偏导
∂D∂b=∑i=1n2(yi−a−bxi)(−xi) =−2∑i=1n(xiyi−axi−bx2i) ∂D∂b=∑i=1n2(yi−a−bxi)(−xi) =−2∑i=1n(xiyi−axi−bxi2) 
=−2(∑i=1nxiyi−a∑i=1nxi−b∑i=1nx2i) =−2(∑i=1nxiyi−nax¯−b∑i=1nx2i)=−2(∑i=1nxiyi−a∑i=1nxi−b∑i=1nxi2) =−2(∑i=1nxiyi−nax¯−b∑i=1nxi2)

令偏导等于0得
−2(ny¯−na−nbx¯)=0−2(ny¯−na−nbx¯)=0
=>a=y¯−bx¯=>a=y¯−bx¯

−2(∑i=1nxiyi−nax¯−b∑i=1nx2i)=0−2(∑i=1nxiyi−nax¯−b∑i=1nxi2)=0并将a=y¯−bx¯a=y¯−bx¯带入化简得
=>∑i=1nxiyi−nx¯y¯+nbx¯2−b∑i=1nx2i=0=>∑i=1nxiyi−nx¯y¯+nbx¯2−b∑i=1nxi2=0
=>∑i=1nxiyi−nx¯y¯=b(∑i=1nx2i−nx¯2)=>∑i=1nxiyi−nx¯y¯=b(∑i=1nxi2−nx¯2)
=>b=∑i=1nxiyi−nx¯y¯∑i=1nx2i−nx¯2=>b=∑i=1nxiyi−nx¯y¯∑i=1nxi2−nx¯2

因为∑i=1n(xi−x¯)(yi−y¯)=∑i−1n(xiyi−x¯yi−xiy¯+x¯y¯)=∑i=1nxiyi−nx¯y¯−nx¯y¯+nx¯y¯∑i=1n(xi−x¯)(yi−y¯)=∑i−1n(xiyi−x¯yi−xiy¯+x¯y¯)=∑i=1nxiyi−nx¯y¯−nx¯y¯+nx¯y¯
∑i=1n(xi−x¯)2=∑i−1n(x2i−2x¯xi+x¯2)=∑i=1nx2i−2nx¯2+nx¯2=∑i=1nx2i−nx¯2∑i=1n(xi−x¯)2=∑i−1n(xi2−2x¯xi+x¯2)=∑i=1nxi2−2nx¯2+nx¯2=∑i=1nxi2−nx¯2

所以将其带入上式得b=∑i=1n(xi−x¯)(yi−y¯)∑i=1n(xi−x¯)2

代码实现:

import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt#生成模拟数据,进行测试X = np.array(np.arange(100) ,dtype=np.float32)
Y = np.array(np.arange(100) ,dtype=np.float32)#此时X和Y其实是相等的,后面加入随机值,尽可能真实模拟实际情况
Y +=(np.random.random_sample(100) * 20)# *20指的是,上波动10
Y -=20 #下降20,,,y = x+b  -->  y = x - 10
print(Y[:20])#查看前20列#最小二乘计算
def residuals(p):"计算以p为参数的直线和原始数据之间的误差"k,b = preturn Y - (k*X + b)#这其实是 y=kx+b的变形,,y-kx+b = 0r = optimize.leastsq(residuals,[1,0])#引用最小二成计算,
k,b = r[0]
print(k,b)#图像展示
plt.figure(figsize=(6,6))
plt.plot(X,Y,'ro',label="point")# 拟合直线
x = np.arange(0,100,0.1)
y = x*k+b
plt.plot(x,y,"b")
plt.show()

完整代码码云超链接

【机器学习】线性回归(最小二乘法实现)相关推荐

  1. 机器学习--线性回归(LinearRegression)

    机器学习–线性回归 基本概念 LinearRegression 拟合一个带有系数 w=(w1,...,wp)w = (w_1, ..., w_p)w=(w1​,...,wp​) 的线性模型,使得数据集 ...

  2. 机器学习线性回归算法实验报告_机器学习之简单线性回归

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

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

    机器学习线性回归 用scikit-learn和pandas学习线性回归 1. 获取数据,定义问题 2. 整理数据 3. 准备数据 4. 训练数据 5. 模型评价 尝试用不同的线性模型进行训练 交叉验证 ...

  4. 线性回归-最小二乘法

    1.简单线性回归 所要求得的结果是一个具体的数值,而不是一个类别的话,则该问题是回归问题.只有一个特征的回归问题,成为简单线性回归.两个变量之间存在一次方函数关系,就称它们之间存在线性关系.拟合就是把 ...

  5. 机器学习线性回归_机器学习-线性回归

    简单说明 线性回归 最小二乘法,也叫最小二乘估计,具体概念自行查询,下面我举个比较通俗的例子 可以解决的问题 如果给你一个人(18-22岁)的体重,让你预测他(她)的身高,你会怎么做? 第一步:从身边 ...

  6. 机器学习线性回归学习心得_机器学习中的线性回归

    机器学习线性回归学习心得 机器学习中的线性回归 (Linear Regression in Machine Learning) There are two types of supervised ma ...

  7. 机器学习 线性回归算法_探索机器学习算法简单线性回归

    机器学习 线性回归算法 As we dive into the world of Machine Learning and Data Science, one of the easiest and f ...

  8. 机器学习线性回归实践,广告投放收益预测,手写梯度下降

    机器学习线性回归模型,广告投放与收益预测,梯度下降法python实现 数据集介绍 代码 数据导入 特征缩放 绘制三个不同地方广告投入与收益的散点图 数据处理 添加偏置列 定义代价函数 梯度下降 初始化 ...

  9. 机器学习——线性回归、房价预测案例【正规方案与梯度下降】

    # coding:utf-8 # 1.获取数据集 #2.数据基本处理 #2.1.数据划分 #3.特征工程--标准化 #4.机器学习(线性回归) #5.模型评估 from sklearn.dataset ...

  10. 前端机器学习——线性回归

    前端机器学习--线性回归 前端机器学习--逻辑回归传送门 哈,现在我们再跳回机器学习的入门模型--线性回归,上一波我们使用逻辑回归完成了一个用户喜爱颜色预测的功能,那么我们这次就用线性回归完成一个将好 ...

最新文章

  1. 敏感性与特异性理解笔记
  2. 通过PowerShell查询本机IP地址
  3. mysql可以用视图insert_MySql-视图操作
  4. Vue结合Echarts
  5. 当前脚本文件中调用另外一个脚本
  6. java作用域public ,private ,protected 及不写时的区别(转)
  7. 全网首发:首个安卓摄像头预览加显示的项目
  8. atitit 面试问题表 侧重于项目和业务描述方面.v2 良好的标准:: 1.回答问题比较流畅,较少出现停顿现象,较少犹豫 2.回答有条理清晰 不杂乱 3.回答较为丰富内容 4.精神状态紧张
  9. 软件安装(一):VS2017安装和使用
  10. 圈子圈套,何谓成功?
  11. 游戏汉化技术内幕——第3章索引和资源的说明
  12. OFF文件格式_拔剑-浆糊的传说_新浪博客
  13. 00012__photoScissor__替换照片背景
  14. 【记录】Nginx开源版安装与部署
  15. 【jquery】收藏本站——添加到浏览器的收藏夹
  16. 计算机搜索没办法打汉字,电脑只能输入拼音不能输入汉字怎么办
  17. 子集和问题 算法_LeetCode 题解 | 78.子集
  18. 大众点评支付渠道网关系统的实践之路
  19. 安装openssh-server报Depends: openssh-client (= 1:6.6p1-2ubuntu2.8)错误
  20. 15.2 矩阵链乘法

热门文章

  1. 内存管理之内存映射——概述
  2. lenovo L480 进入bios_小白福利教程:如何刷显卡BIOS以及强刷显卡BIOS(一)
  3. 【机器学习】逻辑回归 LR 算法 整理
  4. 雷达原理---时频分析--4.小波分解在信号分析中的应用实例
  5. 电力-101/104规约基础2
  6. 中国工业互联网相关政策汇总分析:“十四五”系列规划助力工业互联网创新融合发展[图]
  7. 古今地名对照总表!(按笔划数排序,强烈推荐的资料)
  8. 干货!Web 网页设计规范
  9. N、NP、NPC问题分析
  10. 文件内存映射(一):它是什么