Python 最小二乘法求解线性回归模型

机器学习线性回归模型

线性回归(linear regression)是一种线性模型,它假设输入变量 x 和单个输出变量 y 之间存在线性关系

具体来说,利用线性回归模型,可以从一组输入变量 x 的线性组合中,计算输出变量 y:y=ax+b

给定有d个属性(特征)描述的示例 x =(x1; x2; …; xd),其中xi是x在第i个属性(特征)上的取值,线性模型(linear model)试图学得一个通过属性(特征)的线性组合来进行预测的函数,即:

一般用向量形式写成:

其中 w = {w1,w2,w3,,,,,,}。

许多功能更为强大的非线性模型可在线性模型的基础上通过引入层级结构或高维映射而得。

最小二乘法求解

基于均方误差最小化来进行模型求解的方法称为“最小二乘法”(least square method)

它的主要思想就是选择未知参数,使得理论值与观测值之差的平方和达到最小。

我们假设输入属性(特征)的数目只有一个:

在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和最小。

求解线性回归

求解w和b,使得最小化的过程,称为线性回归模型的“最小二乘参数估计”。

将E(w,b)分别对w和b求导,可以得到

令偏导数都为0,可以得到

—— 其中

代码实现


### 0.引入依赖
import numpy as np
import matplotlib.pyplot as plt
### 1.导入数据
points = np.genfromtxt('data.csv',delimiter=',')
# 提取points中的两列数据,分别作为x,y
x = points[:, 0]
y = points[:, 1]
# 用plt画出散点图
plt.scatter(x, y)
plt.show()###  2.定义损失函数
# 损失函数是系数的函数,另外还要传入数据的x,y
def compute_cost(w, b, points):total_cost = 0M = len(points)#逐点计算平方损失,然后计算平均值for i in range(M):x = points[i, 0]y = points[i, 1]total_cost += (y - w*x -b) ** 2return total_cost/M### 3.定义算法拟合函数
# 先定义一个求均值的函数
def average(data):sum = 0num = len(data)for i in range(num):sum += data[i]return sum/num# 定义核心拟合函数
def fit(points):M = len(points)x_bar = average(points[:,0])sum_yx = 0sum_x2 = 0sum_delta = 0for i in range(M):x = points[i, 0]y = points[i, 1]sum_yx += y * (x - x_bar)sum_x2 += x ** 2# 根据公式计算ww = sum_yx / (sum_x2 - M * (x_bar ** 2))for i in range(M):x = points[i, 0]y = points[i, 1]sum_delta += (y - w * x)b = sum_delta / Mreturn w, b### 4. 测试
w ,b = fit(points)
print("w is: ", w)
print("b is: ", b)
cost = compute_cost(w, b, points)
print("cost is : ",cost)
### 5.画出拟合曲线
plt.scatter(x,y)
#针对每一个x,计算得出预测的y值
pred_y = w * x + b
plt.plot(x, pred_y, c='r')
plt.show()

Matlab版本感兴趣的读者可以自己试一下求解,

2021-04-24 Python 最小二乘法求解线性回归模型相关推荐

  1. 最小二乘法求解线性回归模型

    最小二乘法求解线性回归模型 题目描述 计算公式 测试用主函数及其它 输入 输出 样例输入 样例输出 杂谈 代码 时间限制: 1 Sec 内存限制: 128 MB 题目描述 假设有一组观测数据(X,Y) ...

  2. 一文带你用Python玩转线性回归模型《加利福尼亚房价预测》回归模型评估指标介绍

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 前言 这 ...

  3. Python构建简单线性回归模型教程

    本文介绍如何构建简单线性回归模型及计算其准确率,最后介绍如何持久化模型. 线性回归模型 线性回归表示发现函数使用线性组合表示输入变量.简单线性回归很容易理解,使用了基本的回归技术,一旦理解了这些基本概 ...

  4. Python 实战多元线性回归模型,附带原理+代码

    作者 | 萝卜 来源 | 早起Python( ID:zaoqi-python ) 「多元线性回归模型」非常常见,是大多数人入门机器学习的第一个案例,尽管如此,里面还是有许多值得学习和注意的地方.其中多 ...

  5. 原理 + 代码 | Python 实现多元线性回归模型 (建模 + 优化,附源数据)

    前言 多元线性回归模型非常常见,是大多数人入门机器学习的第一个案例,尽管如此,里面还是有许多值得学习和注意的地方.其中多元共线性这个问题将贯穿所有的机器学习模型,所以本文会将原理知识穿插于代码段中,争 ...

  6. 回归分析:最小二乘法估计线性回归模型的参数

    一.一元线性回归 回归分析可以用来分析变量间的关联强度和关联方向,而且还可以通过回归方程式,利用已知的自变量预测未知的因变量. 一元线性回归又称简单线性回归,是只包括一个自变量和一个因变量,而且二者的 ...

  7. 【项目实战】Python实现多元线性回归模型(statsmodels OLS算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 回归问题是一类预测连续值的问题,而能满足这样要求的数学模型称作回 ...

  8. HDC.Cloud 华为开发者大会2021.04.24 学习记录

    华为开发者大会2021(Cloud),每一个开发者都了不起 前言 又一次来到深圳,上次是参观腾讯滨海大厦,这次来到深圳的大学城参加华为开发者大会,一天下来收获满满:除了四场干货满满的分享会,还在午休期 ...

  9. python对于一元线性回归模型_Python一元线性回归分析实例:价格与需求的相关性...

    来自烟水暖的学习笔记 回归分析(Regression analysis) 回归分析(Regression analysis),是研究因变量与自变量之间相关性的一种数学方法,并将相关性量化,即得到回归方 ...

最新文章

  1. 360显示html邮件内容,“邮件怎样发送视频内容”的解决方案
  2. r语言聚类分析_「SPSS数据分析」SPSS聚类分析(R型聚类)的软件操作与结果解读...
  3. 使用PowerDesigner做数据库设计(二)
  4. 不用GD32?我把STM32换成了国产MM32
  5. 巧用枚举CommandBehavior关闭SqlDataReader联接数据库时的conn.open状态
  6. Problem C(HDU-5687)
  7. RuntimeError: Expected tensor for argument #1 ‘indices‘ to have scalar type Long; but got CUDAFloatT
  8. state.php,状态模式(State)
  9. LINQ语句之Select/Distinct和Count/Sum/Min/Max/Avg
  10. Exchange Server 2013文档系列之四: Exchange Server 2013在Windows 2008 R2下部署
  11. 将PowerPCB 中的pcb文件导入到Protel中使用
  12. 计算H时M分S秒以后是_泵所需轴功率的计算方式
  13. 【博主推荐】html好看的个人主页(附源码)
  14. CSS YUI reset
  15. 百度地图javascriptAPI点击地图得到坐标(拾取坐标)
  16. 百度云盘在线解析不限速下载网盘网站源码
  17. 《物流与供应链管理》读书笔记
  18. Android Service保活方法总结
  19. 第一个php小程序(学习)
  20. CSS多行文本溢出隐藏,显示省略号

热门文章

  1. tensorflow机器学习模型的跨平台上线
  2. 拉格朗日插值法的MATLAB源程序
  3. 几种搜索引擎算法的研究
  4. 机器学习笔记——皮尔逊相关系数
  5. #论文 《Towards Binary-Valued Gates for Robust LSTM Training》
  6. node-rsa加密,java解密调试
  7. Jodd-vtor验证框架
  8. LMAX Disruptor – High Performance, Low Latency and Simple Too 转载
  9. 速神经网络的训练算法LARS/LAMB工作原理 --UC Berkeley在读博士生尤洋
  10. 招商银行行长田惠宇:疫情对信用卡业务造成影响最大,40%催收产能在武汉