最小二乘法构建线性回归方程

线性回归 Linear Regression python实现(含最小二乘法、梯度下降) 这一系列的博客,主要是记录在学校的Machine Learning实践课中,一些学习的过程,以及自己补充的基础知识(以引用来表示)。原理在西瓜书上都有,因此本系列博客原理部分涉及较少,主要是用python来实现,会包含一些公式。 “机器学习就是自动找函数” 文章目录1. 最小二乘法求解Linear Regression2. 梯度下降求解Linear Regression regression:函数的输出是一个数值 binary classification:二分类 generation:生成 给出la. 阅读详情

一、线性回归的意义

线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。在线性回归中,数据使用线性预测函数来建模,并且未知的模型参数也是通过数据来估计。由于市场现象一般是受多种因素的影响,而并不是仅仅受一个因素的影响。所以应用一元线性回归分析预测法,必须对影响市场现象的多种因素做全面分析。只有当诸多的影响因素中,确实存在一个对因变量影响作用明显高于其他因素的变量,才能将它作为自变量,应用一元相关回归分析市场预测法进行预测。
一元线性回归分析法的预测模型如下:
在这里插入图片描述
式中,xt代表t期自变量的值;
Yt代表t期因变量的值;
a、b代表一元线性回归方程的参数。
a、b参数由下列公式求得:
在这里插入图片描述
相关系数R2是用以反映变量之间相关关系密切程度的统计指标。我们可以用 在这里插入图片描述
来刻画回归的效果。对于已经获取的样本数据,R2表达式中的总体平方和
在这里插入图片描述

为确定的数。因此R2越大,意味着残差平方和
在这里插入图片描述
越小,即模型的拟合效果越好;R2越小,残差平方和越大,即模型的拟合效果越差。在线性回归模型中,R2表示解释变量对于预报变量变化的贡献率。R2越接近于1,表示回归的效果越好。

二、线性回归的使用

使用工具:Excel,jupyter,身高体重数据集 提取码:f9bz

1.在Excel中练习线性回归

用excel打开下载的身高体重数据集,在weights_heights中选择前二十组数据,在选中的二十组数据右下角弹出的快速分析中选择散点图:
在这里插入图片描述
excel会自动根据选择的数据生成对应的散点图,再根据如下方法打开趋势线中的更多选项,勾选显示公式和显示R平方值:
在这里插入图片描述
可以看到,excel自动生成了二十组数据的散点图并求出了线性回归公式和对应的相关系数。如法炮制,我们选择200组,2000组,20000组数据分别构造线性回归:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
以上结果显示,并不是使用越多数据构建的线性回归方程就越准确,选择的数量与线性回归方程的拟合程度没有太大关系。那么同样数量的数据组,选择的数据不同对结果有不有影响呢,答案是有的,任意选择除前二十组外的二十组数据,构造线性回归方程,结果与前二十组的结果不同
在这里插入图片描述
所以,在构造线性回归方程时,适当的选取数据能得到更好的结果。

2.使用jupyter来做一元线性回归分析

  • 不调包实现一元线性回归
import pandas as pd
def read_file(raw):#根据行数来读取文件
    df = pd.read_excel('.\\weights_heights(身高-体重数据集).xls',sheet_name ='weights_heights')
    height=df.iloc[0:raw,1:2].values
    weight=df.iloc[0:raw,2:3].values
    return height,weight

def array_to_list(array):#将数组转化为列表
    array=array.tolist()
    for i in range(0,len(array)):
        array[i]=array[i][0]
    return array

def unary_linear_regression(x,y):#一元线性回归,x,y都是列表类型
    xi_multiply_yi=0
    xi_square=0;
    x_average=0;
    y_average=0;
    f=x
    for i in range(0,len(x)):
        xi_multiply_yi+=x[i]*y[i]
        x_average+=x[i]
        y_average+=y[i]
        xi_square+=x[i]*x[i]
    x_average=x_average/len(x)
    y_average=y_average/len(x)
    b=(xi_multiply_yi-len(x)*x_average*y_average)/(xi_square-len(x)*x_average*x_average)
    a=y_average-b*x_average
    for i in range(0,len(x)):
        f[i]=b*x[i]+a
    R_square=get_coefficient_of_determination(f,y,y_average)
    print('R_square='+str(R_square)+'\n'+'a='+str(a)+'  b='+str(b))
    
def get_coefficient_of_determination(f,y,y_average):#传输计算出的值f和x,y的真实值还有平均值y_average,获取决定系数,也就是R²
    res=0
    tot=0
    for i in range(0,len(y)):
        res+=(y[i]-f[i])*(y[i]-f[i])
        tot+=(y[i]-y_average)*(y[i]-y_average)
    R_square=1-res/tot 
    return R_square

raw=[20,200,2000,20000]
for i in raw:
    print('数据组数为'+str(i)+":")
    height,weight=read_file(i)
    height=array_to_list(height)
    weight=array_to_list(weight)
    unary_linear_regression(height,weight)

文件路径根据自己下载《身高体重数据集》的路径修改,点击运行:
在这里插入图片描述

  • 调包实现一元线性回归
from sklearn import linear_model
from sklearn.metrics import r2_score
import numpy as np
import pandas as pd
def read_file(raw):#根据行数来读取文件
    df = pd.read_excel('.\\weights_heights(身高-体重数据集).xls',sheet_name ='weights_heights')
    height=df.iloc[0:raw,1:2].values
    weight=df.iloc[0:raw,2:3].values
    return height,weight

raw=[20,200,2000,20000]#要读取的行数
for i in raw:
    print('数据组数为'+str(i)+":")
    height,weight=read_file(i)
    weight_predict=weight
    lm = linear_model.LinearRegression()
    lm.fit(height,weight)
    b=lm.coef_
    a=lm.intercept_
    weight_predict=lm.predict(height)#计算有方程推测出来的值
    R_square=r2_score(weight,weight_predict)#计算方差
    print('b='+str(b[0][0])+' a='+str(a[0]))
    print('R_square='+str(R_square))

运行:
在这里插入图片描述

参考博客:最小二乘法构建线性回归方程

Quartus ||———基于Verilog HDL的数字秒表设计实验 Quartus ||———基于Verilog HDL的数字秒表设计实验一、实验目的二、实验步骤(一)新建工程(二)添加设计文件(三)综合分析与功能仿真1、综合分析2、功能仿真 一、实验目的 用Verilog HDL设计一个数字跑表,所需引脚和功能如下: 二、实验步骤 (一)新建工程 在创建好工程名称后,选定芯片类型 (二)添加设计文件 新建Verilog文件,键入代码如下 module n_clk_top( input clk, input rese 阅读详情

相关推荐

python多线程实现http代理

python多线程实现http代理文章要求1.py socket模块2.py threading模块3.环境搭建3.1设置代理3.2搭建http简单服务器代码分析1.完整代码2.逻辑结构 文章要求 1.py socket模块 socket模块接触后很简单,我实现的是阻塞性的套接字。 需要了解到,连接套接字,监听套接字,和套接字accept()方法的返回值是元组 数据传递过程sock.recv(1024),sock.send()也不需要转换编码,直接以b"二进制流"传输 2.py threading模块 th

qq_43402663的博客 2508

用Excel求线性回归方程

文章目录一、何为线性回归二、如何制作线性回归最小二乘法三、利用Excel求线性回归方程操作方法1.选择需要拟合的数据2.点击工具栏的插入,选择插入散点图3.在生成的表格右上角勾选上生成渐近线4.右击生成的渐近线,选择设置渐近线格式5.勾选线性以及显示公式6.最终效果拟合数据1、选取前20组数据2、选取前200组数据3、选取前2000组数据 一、何为线性回归 线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w’x+e,e为误差

醉意丶千层梦的博客 4万+

避坑指南:SAP STO订单里‘发货存储地点’栏位不显示?检查这个关键配置

本文深入解析SAP STO订单中‘发货存储地点’栏位缺失问题的根本原因及解决方案。通过激活库存地点间转储功能、维护库存地点主数据等关键配置步骤,帮助用户快速恢复业务操作。特别适用于MM模块实施顾问和SAP系统管理员处理UB STO相关技术问题。

weixin_30632089的博客 98

用Excle工具利用最小二乘法求回归方程

用Excle工具利用最小二乘法求回归方程首先在Excle表格录入数据然后计算x的平均数,y的平均数接着计算x的平方再算一列数据乘以另一列的数据利用数据分析进行求回归数据 首先在Excle表格录入数据 然后计算x的平均数,y的平均数 1.先在相邻表格的第一行键入x的平均数 2. 然后选取“公式”在选项栏里找函数 3.再点击回车键,得出平均值,同理求出y的平均值 接着计算x的平方 这里需要调用函数POWER函数,这个函数是返回某数的幂 1.在公式选项栏最左边找到“插入函数” 点击确定,然后点

你我皆是黑马 3万+

Win11系统下Abaqus2022与VS2022+oneAPI2023环境配置全攻略(附VUMAT子程序避坑指南)

本文详细指导在Windows 11系统下,为Abaqus 2022配置Visual Studio 2022与Intel oneAPI 2023的Fortran编译环境,以支持VUMAT等用户子程序开发。内容涵盖软件安装顺序、环境变量关联、快捷方式修改及关键验证步骤,并提供了首个VUMAT子程序的实战编写与模型验证方法,帮助用户高效搭建稳定可靠的仿真开发平台。

pytorch8learner的博客 316

Anolis 8系统下,手把手搞定Nginx、Redis、JDK8和Tomcat9的完整安装与配置(含开机自启)

本文详细介绍了在Anolis 8系统下搭建Java Web全栈环境的完整流程,包括JDK8、Tomcat9、Nginx和Redis的安装与配置,并实现系统级服务管理。通过深入每个组件的配置细节,揭示服务间的协同关系,最终打造一个生产级可用的标准化环境。

weixin_42556197的博客 158

线性回归与线性拟合的原理、推导与算法实现

关于回归和拟合,从它们的求解过程以及结果来看,两者似乎没有太大差别,事实也的确如此。从本质上说,回归属于数理统计问题,研究解释变量与响应变量之间的关系以及相关性等问题。而拟合是把平面的一系列点,用一条光滑曲线连接起来,并且让更多的点在曲线上或曲线附近。更确切的说,拟合是回归用到的一种数学方法,而拟合与回归的应用场合不同。拟合常用的方法有。其中最最常用的就是最小二乘法。并且拟合可以分为线性拟合与非线性拟合,非线性拟合比较常用的是多项式拟合。根据自变量的个数,拟合也可以分为曲线拟合与曲面拟合等。

gghhb12的博客 1万+

ArcGIS新手必看:HWSD2土壤数据从下载到批量提取TIFF的完整流程

本文详细介绍了ArcGIS中HWSD2土壤数据的完整处理流程,从数据下载、预处理到批量提取TIFF文件。涵盖栅格属性表构建、属性数据连接及性能优化等关键步骤,帮助新手高效掌握HWSD2数据提取技术,提升地理信息数据处理效率。

ll5678的博客 1035

线性回归——拟合逼近

一、前言 y=ax+b,一个极其简单却又贯穿我们学习生涯的函数,今天我们开始对它进行讨论。这种确定的函数关系式表示在实数范围内x与y之间存在且唯一存在一种映射关系,使得对于任意一个x,均有唯一的一个y来与之对应。 然而在实际生活中,两个变量间的关系并不总能以确定的函数关系式来表示,如收入与教育水平的关系,虽然大部分情况下收入随着教育水平的提高而升高,但事实上,收入除了与教育水平有关联,还受到家庭背景,个人能力,个人机遇等诸多因素的影响,因此我们无法找到一个函数y=ax+b...

weixin_44167798的博客 3236

Android Profiler实战:如何用CPU分析工具揪出卡顿元凶(附线程状态解读)

本文深入解析Android Profiler中的CPU分析工具,重点聚焦线程活动监控。通过解读线程状态时间轴上的绿、黄、灰三色含义,并结合实战案例,指导开发者精准定位导致界面卡顿的CPU密集型或I/O阻塞代码,有效提升应用性能与用户体验。

weixin_29197699的博客 372

N32在Keil中J-Link识别失败的排查与修复指南

本文详细解析了在Keil开发环境中,J-Link调试器无法识别N32系列MCU的常见问题。通过分步指导,从检查修改Keil工程配置文件、更新J-Link驱动,到手动添加N32专用设备支持包,系统性地提供了排查与修复方案,帮助开发者快速恢复调试连接,确保开发流程顺畅。

300

sk-learn 最小二乘法-练习

LinearRegression 用系数拟合线性模型 尽量减少数据集中观察到的目标与线性近似预测的目标之间的平方余数 hat{y}(w, x) = w_0 + w_1 x_1 + … + w_p x_p 实例讲解:有一组数据(1,6),(3,5),(5,7),(6,12),要找出一条与这几个点最为匹配的直线 : y = A + Bx 有如下方程: 6 = A + B 5 = A + 3B 7 = A + 5B 12 = A + 6B 很明显上面方程是超定线性方程组,要使左边和右边尽可能相等;采用最小二乘法:

weixin_41901939的博客 415

【GlobalMapper精品教程】084:tif(tfw)、jpg(jgw)、png(pgw)的区别与联系

摘要:本文介绍了TFW、JGW、PGW等地理参考文件的基本原理和应用。这些文件通过简单的文本格式存储栅格图像的地理坐标信息,适用于平面坐标系下的GIS数据处理。文章详细说明了文件各行的含义,并提供了在ArcGIS和Globalmapper中生成这些文件的具体操作步骤,包括导出TIFF、JPG、PNG格式时勾选生成对应坐标文件的选项。这些文件虽然简单易用,但仅适用于平面坐标系,且功能相对有限。配套视频教程提供了更详细的操作演示。

智慧空间实验室 2400

数学建模:线性回归模型的Python实现

Python,线性回归,模型检验

weixin_56529327的博客 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

机器学习算法——线性回归(超级详细且通俗)

通俗理解线性回归 回归分析 什么是回归分析呢?这是一个来自统计学的概念。回归分析是指一种预测性的建模技术,主要是研究自变量和因变量的关系。通常使用线/曲线来拟合数据点,然后研究如何使曲线到数据点的距离差异最小。 例如,存在以下数据 然后我们拟合一条曲线f(x): 回归分析的目标就是要拟合一条曲线,让图中红色线段加起来的和最小。 线性回归(简介) 线性回归是回归分析的一种。 假设目标值(因变量)与特征值(自变量)之间线性相关(即满足一个多元一次方程,如:f(x)=w1x1+…+wnxn+b.)。 然后构

weixin_44697198的博客 5万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

最小二乘法的思路及推导过程

本文介绍了最小二乘法的基本思想,以及如何推导出最小二乘法的拟合公式

weixin_40255714的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

最小二乘法拟合直线--C++/Opencv

1.原理 在现实中经常遇到这样的问题,一个函数并不是以某个数学表达式的形式给出,而是以一些自变量与因变量的对应表给出,老师讲课的时候举的个例子是犯罪人的身高和留下的脚印长,可以测出一些人的数据然后得到一张表,它反应的是一个函数,回归的意思就是将它还原成数学表达式,这个式子也称为经验表达式,之所以叫经验就是说它不完全是实际中的那样准确,是有一定偏差的,只是偏差很小罢了。 最小二乘法

wxtao68的专栏 2005

线性回归原理----简单线性回归、多元线性回归

回归分析是用来评估变量之间关系的统计过程。用来解释自变量X与因变量Y的关系。即当自变量X发生改变时,因变量Y会如何发生改变。 线性回归是回归分析的一种,评估的自变量X与因变量Y之间是一种线性关系,当只有一个自变量时,成为简单线性回归,当具有多个变量时,称为多元线性回归。 线性关系的理解: >画出来的图像是直的(简单线性回归是直线,多元线性回归是超平面) >每个自变量的最高次项为1 拟合是指构建一种算法,使得该算法能够符合真实的数据。从机器学习角度讲,线性回归就是要构建一个线性函

weixin_41395763的博客 7993

线性回归算法是什么

构建完模型,我们需要对其进行训练,训练的过程就是将表格中的数据以矩阵的形式输入到模型中,模型则通过数学统计方法计算房屋价格与各个特征之间关联关系,也就是“权值参数”。其中 x 表示输入的样本数据,y 表示输出的预测结果,而 w1 指的是线性回归模型的权值参数,b 指的是线性回归模型的“偏差值”。在上述讲解过程中,我们反复提起“预测”与“历史数据”,既然是预测,那么就不能说它是 100 % 精确,所以线性回归只是无限地逼近“真实值”,而这个逼近的过程需要大量“历史数据”提供支持。

ZhangJiqun&191cm&85kg 427

人工智能--机器学习线性回归数学原理及实现

系列文章目录 人工智能—机器学习是什么 人工智能—机器学习简单的线性回归问题 文章目录系列文章目录前言一、线性回归的第一步1、数据读取和相关性分析二、线性回归理论分析1.统计学概念2.回归方程构建3.最小二乘法4.梯度下降5.求解最小二乘法三、线性回归代码实现1.数据读取和相关性评估2.参数设置3.定义损失函数4.定义梯度下降函数5.进行线性回归6.结果分析总结 前言       在上一个章节中,我们已经给大家讲解了什么是线性回归,并且用py

Foxerity的博客 1674

线性回归算法推导与实战

本文属于 线性回归算法【AIoT阶段三】(尚未更新),这里截取自其中一段内容,方便读者理解和根据需求快速阅读。本文通过公式推导+代码两个方面同时进行,因为涉及到代码的编译运行,如果你没有 NumPy,Pandas,Matplotlib的基础,建议先修文章:数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)回归简单来说就是 “回归平均值” (regression to the mean。但是这里的 mean 并不是把 历史数据直接当成未来的预测值,而是会把期望值当作预测值。 追根溯源 回归 这个

佛系更新 3817

线性回归

一、线性回归的概念 1、线性的概念:将求 x --> y的映射关系 转化为 关于 θ 的线性回归,权重系数 θ 最高次幂是 1(与特征属性 X 的次数无关)。 2、线性回归的类型:有监督学习(y标签是连续的) 3、线性回归本质:构造一个函数,使得样本点均匀分布在该函数图像(二维:线、三维:面 ..... )的两侧 4、求解回归方程本质:求 最优 权重系数 θ 矩阵 二、...

鲨鱼儿的博客 2577

最小二乘法与线性回归

最小二乘法与线性回归

weixin_46713695的博客 433

机器学习(11)线性回归(1)理论:损失函数(含最小二乘法)、正规方程、梯度下降、回归性能评估(均方差)

目录 一、线性回归基础理论 定义: 线性关系公式: 单特征线性关系: 双特征平面关系: 其他线性模型: 二、线性回归的损失和优化原理 1、损失函数/最小二乘法 2、优化方法: 2-1、正规方程 1、公式 2、原理 2-2、梯度下降 1、单特征 2、双特征 3、梯度下降过程(单特征) 4、梯度下降过程(双特征) 三、正规方程优化(波士顿房价预测) API 1、获取数据集 2、划分数据集 3、标准化 4、 创建预估器,得到模型 代码 四、梯度下降优...

great_yzl的博客 1万+

【算法原理】线性回归算法原理

假设小明是银行的一名客户研究员,他想利用银行客户的年龄(X1)与工资(X2)建立一个预测模型,预测不同客户存款数额(Y)的大小。 目前他手头已经有银行客户的历史数据表:X1列记录客户年龄、X2列记录客户工资、Y列记录客户存款数额。 最开始,他建立了最简单的预测方程: (小明知道不同变量所占的权重是不一样的,方程中变量前的参数就代表权重) 然后,他用手头的数据去训练该方程,发现该方程并不是能够...

数据分析成长之路 740
上一篇: Spring boot入门之web开发基础教程
下一篇: 基于MDK创建纯汇编语言的STM32工程
羚漆
博客等级 码龄5年 31粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值