使用Python进行数据分析——线性回归分析
大家好,线性回归是确定两种或两种以上变量之间互相依赖的定量关系的一种统计分析方法。根据自变量的个数,可以将线性回归分为一元线性回归和多元线性回归分析。
一元线性回归:就是只包含一个自变量,且该自变量与因变量之间的关系是线性关系。例如通过广告费这一个自变量来预测销量,就属于一元线性回归分析。
多元线性回归:如果回归分析包含两个或以上的自变量,且每个因变量与自变量之间都是线性关系,,则成为多元线性回归分析;例如通过肥料、灌溉等人工成本来预测产量,就属于多元线性回归。
一、线性回归分析的思路
确定因变量与自变量。比如通过人工成本费进行产量预测时,人工成本费是自变量,产量是因变量。
确定线性回归分析的类型。例如在一元线性回归分析中,只需要确定自变量与因变量的相关度为强相关性,即可建立一元线性回归方程,从而确定线性回归分析的类型为一元线性回归。
建立线性回归分析模型。
检验线性回归分析模型的拟合程度。为了判断线性回归分析模型是否可用于实际检测,需要检验线性回归分析模型的拟合程度,也就是对模型进行评估,主要以这三个值作为评估标准:(R-squared统计学中的)、Adj.R-squared(即Adiustd )、P值;其中前两个用来衡量线性拟合的拟合程度,P值用来衡量特征变量的显著性。
利用线性回归分析模型进行预测。如果拟合出来的回归分析模型的拟合度符合要求,就可以使用该模型以及计算出的系数a和b得到回归方程,从而根据已有的自变量数据来预测需要的因变量结果。
二、一元线性回归分析

那我们初中学过的一元一次方程y=ax+b来说:就是最简单的一元线性回归,接下来,我们以上图数据为例,假设当人工成本为6600元时,产量为多少?我们下面就这一实际生产问题问题进行一元线性回归分析代码演示。
确定因变量与自变量:
import pandas as pd
data= pd.read_excel('D:/shujufenxi/作物表型记录本.xlsx',sheet_name=0,index_col='序号')
print(data.head())
我们要进行的是根据已知的6600人工成本预测产量,由此可知,人工成本费为自变量,产量为因变量。
确定线性回归分析的类型:
import pandas as pd
data= pd.read_excel('D:/shujufenxi/作物表型记录本.xlsx',sheet_name=0,index_col='序号')
print(data.head())
# 选中自变量与因变量的数据,x为自变量,y为因变量
x=data[['人工成本费(元)']]
y=data[['产量(公斤)']]
# 确定线性回归分析的类型
corr=data.corr()
print(corr)
可以看到人工成本与产量之间的相关系数为0.965321,为强相关,随后利用Matplotlib模块进行绘制散点图,代码如下:
# 绘制散点图
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.scatter(x,y)
plt.xlabel('人工成本费(元)')
plt.ylabel('产量(公斤)')
plt.show()
建立回归分析模型以及检验线性回归分析模型的拟合程度:
#建立回归分析模型
from sklearn.linear_model import LinearRegression # 需下载Scikit-Learn模块,使用LinearRegression()函数建立线性回归分析模型
Model=LinearRegression()
Model.fit(x,y)
#检验线性回归分析模型的拟合程度
score=Model.score(x,y)
print(score)
plt.scatter(x,y)
plt.plot(x,Model.predict(x))
plt.xlabel('人工成本费(元)')
plt.ylabel('产量(公斤)')
plt.show()
可以看出模型的评分约为0.93,很接近1,拟合程度还是较高的。

可以看出大多数散点还是比较靠近这条直线的,说明模型很好的捕捉到了数据特征,可以算是恰当拟合。
利用线性回归分析进行预测:
# 预测,也可以进行同时预测多个,如下
y=Model.predict([[6600],[15000],[8888]])
print(y)
三、多元线性回归分析

下面我们利用此虚拟数据假设当农药成本费、肥料成本费、田间管理成本费分别为3400、2900、3100时的产量为多少,下面我们将进行完整代码演示:
## 确定自变量与因变量
import pandas as pd
data= pd.read_excel('D:/shujufenxi/作物表型记录本.xlsx',sheet_name=1,index_col='序号')
print(data.head())
# 选中自变量与因变量的数据,x为自变量,y为因变量
x=data[['农药成本费(元)','肥料成本费(元)','田间管理成本费(元)']]
y=data[['产量(公斤)']]
# 确定线性回归分析的类型——图3
corr=data.corr()
print(corr)
# 绘制散点图——图1
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
sns.pairplot(data,x_vars=['农药成本费(元)','肥料成本费(元)','田间管理成本费(元)'],y_vars='产量(公斤)')
plt.show()#建立回归分析模型
from sklearn.linear_model import LinearRegression # 需下载Scikit-Learn模块,使用LinearRegression()函数建立线性回归分析模型
Model=LinearRegression()
Model.fit(x,y)
#检验线性回归分析模型的拟合程度——图3
score=Model.score(x,y)
print(score)
# 绘制拟合成果图——图2
sns.pairplot(data,x_vars=['农药成本费(元)','肥料成本费(元)','田间管理成本费(元)'],y_vars='产量(公斤)',kind='reg')# kind参数可添加一条最佳拟合直线和95%的置信带,从而更直观的展示模型的拟合程度
plt.show()# 预测,也可以进行同时预测多个,如下——图3
y=Model.predict([[3400,2900,3100]])
print(y)


以上就是根据此数据所进行的多元线性回归分析以及模型预测;在上面第二个图中,我们从置信带的宽度来看,农药成本费与产量的线性关系较强,肥料成本费、田间管理成本费两者与产量的线性关系则较弱。
本文所讲对模型进行拟合在实际生产中具有重大意义,不仅可以利用已知变量预测未知变量,还能根据拟合结果判断所得数据是否具有生产意义。
相关文章:
使用Python进行数据分析——线性回归分析
大家好,线性回归是确定两种或两种以上变量之间互相依赖的定量关系的一种统计分析方法。根据自变量的个数,可以将线性回归分为一元线性回归和多元线性回归分析。一元线性回归:就是只包含一个自变量,且该自变量与因变量之间的关系是…...
我眼中的柔宇科技
关注、星标公众号,直达精彩内容来源:技术让梦想更伟大作者:李肖遥很早就知道了柔宇科技,当时是因为知道创始人刘自鸿,23岁清华本硕毕业,26岁获斯坦福大学电子工程博士学位,历时不超过3年&#x…...
Allegro如何快速把视图居中显示操作指导
Allegro如何快速把视图居中显示操作指导 用Allegro进行PCB设计的时候,为了方便检查和设计,时常需要将视图居中显示。一般地,会使用鼠标的中键进行放大和缩小,或者使用Zoom in和Zoom out来调整视图 Allegro还支持快速将视图居中 具体操作如下 点击View...
搜索相关功能
一、进入搜索页面 1.1 在pages下创建搜索页面为:search 1.2 在index.vue中点击进入搜素页面 onNavigationBarButtonTap(e){if(e.floatleft){uni.navigateTo({url:/pages/search/search})}},1.3 在pages.json中配置搜索页面头部 {"path" : "pages/…...
【从零开始制作 bt 下载器】一、了解 torrent 文件
【从零开始制作 bt 下载器】一、了解 torrent 文件写作背景了解 torrent 文件认识 bencodepython 解析 torrent 文件解密 torrent 文件结尾写作背景 最先开始是朋友向我诉说使用某雷下载结果显示因为版权无法下载,找其他的下载器有次数限制,于是来询问我…...
SystemVerilog-时序逻辑建模(5)多个时钟和时钟域交叉
数字硬件建模SystemVerilog-时序逻辑建模(5)多个时钟和时钟域交叉数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。组合逻辑描述了门级电路,其中逻…...
基本中型网络的仿真(RYU+Mininet的SDN架构)-以校园为例
目录 具体问题可以私聊博主 一、设计目标 1.1应用场景介绍 1.2应用场景设计要求 网络配置方式 网络技术要求 网络拓扑要求 互联互通 二、课程设计内容与原理 (1)预期网络拓扑结构和功能 (1)网络设备信息 …...
西北工业大学大学物理(II)期末试题选填解析2021-2022
2 金属薄片,就暗示了载流子是电子了。3 熟练掌握左右手即可。4 又是位移电流。6 感应电场。随时间变化着的磁场能在其周围空间激发一种电场,它能对处于其中的带电粒子施以力的作用,这就是涡旋电场,又叫感生电场。涡旋电场是非保守…...
【USB】windows热插拔通知接口分析
文章目录接口介绍概述过滤器介绍举例接收通知创建窗口参考文档接口介绍 概述 window提供了RegisterDeviceNotificationW方法,可以用来监听设备的热插拔事件。 HDEVNOTIFY RegisterDeviceNotificationW([in] HANDLE hRecipient,[in] LPVOID NotificationFilter,[in]…...
CMake入门
课程地址 文档地址 CMake可以用于所有的编程语言 HelloWorld 编写一个C文件: //hello.cpp #include <iostream>int main() {std::cout << "hello, world" <<std::endl;return 0; }手动编译: c hello.cpp书写CMakeList…...
python中一种编写config文件并及时更新的方法
contents0. Intro1. config.py2. 调用以及更新0. Intro 在pytorch或者其他深度学习框架中,有许多超参数需要调整,包括learning_rate,training_data_path等,因此编写一个config文件统一存放这些参数,方便调用/查看/修改…...
基于Windows下离线安装当前最新Arduino ESP32 SDK(2.0.7)固件开发包
基于Windows下离线安装当前最新Arduino ESP32 SDK(2.0.7)固件开发包✨写这篇的文章的初衷,是由于在前几天想通过离线一键安装包方式实现升级安装,结果发现解压后,可以找到开发板,但是无法上传代码ÿ…...
Android 9.0 app添加校验锁(输入密码才能进入app)
1.概述 在9.0的系统rom定制化开发中,在一些产品开发中,需要对app启动校验密码,输入密码后,才可以进app,所以说对这种 开发需求,首先找到启动app的关键点以后,在加入限制app启动的弹窗,输入密码,密码正确后在进入app,实现流程 就是这样,接下来看如何实现的 2.app添加校…...
注意力机制详解系列(二):通道注意力机制
👨💻作者简介: 大数据专业硕士在读,CSDN人工智能领域博客专家,阿里云专家博主,专注大数据与人工智能知识分享。 🎉专栏推荐: 目前在写CV方向专栏,更新不限于目标检测、…...
动态规划-规划兼职工作
动态规划-规划兼职工作 一、问题描述 你打算利用空闲时间来做兼职工作赚些零花钱。这里有 n 份兼职工作,每份工作预计从 startTime 开始到 endTime 结束,报酬为 profit。给你一份兼职工作表,包含开始时间 startTime,结束时间 en…...
Redis学习笔记(二)Redis基础(基于5.0.5版本)
一、Redis定位与特性 Redis是一个速度非常快的非关系数据库(non-relational database),用 Key-Value 的形式来存储数据。数据主要存储在内存中,所以Redis的速度非常快,另外Redis也可以将内存中的数据持久化到硬盘上。…...
Ancaonda常用cmd命令总结
1) 查看以创建的虚拟环境: conda info --envs / conda env list 2) 激活创建的环境:conda activate xxx(虚拟环境名称) 3) 退出激活的环境:conda deactivate 4) 删除一个已有虚拟环境:conda remove --name(已创建虚拟…...
yolov5_reid【附代码,行人重识别,可做跨视频人员检测】
该项目利用yolov5reid实现的行人重识别功能,可做跨视频人员检测。 应用场景: 可根据行人的穿着、体貌等特征在视频中进行检索,可以把这个人在各个不同摄像头出现时检测出来。可应用于犯罪嫌疑人检索、寻找走失儿童等。 支持功能:…...
多模态预训练模型综述
经典预训练模型还未完成后续补上预训练模型在NLP和CV上取得巨大成功,学术届借鉴预训练模型>下游任务finetune>prompt训练>人机指令alignment这套模式,利用多模态数据集训练一个大的多模态预训练模型(跨模态信息表示)来解…...
华为OD机试题,用 Java 解【玩牌高手】问题
最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
TCP/IP 网络编程 | 服务端 客户端的封装
设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...
WEB3全栈开发——面试专业技能点P4数据库
一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库,基于 mysql 库改进而来,具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点: 支持 Promise / async-await…...
链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...
