当前位置: 首页 > news >正文

Python深度学习GRU、LSTM 、BiLSTM-CNN神经网络空气质量指数AQI时间序列预测及机器学习分析|数据分享...

全文链接:https://tecdat.cn/?p=38742

分析师:Zhixiong Weng

人们每时每刻都离不开氧,并通过吸入空气而获得氧。一个成年人每天需要吸入空气达6500升以获得足够的氧气,因此,被污染了的空气对人体健康有直接的影响,空气品质对人的影响更是至关重要点击文末“阅读原文”获取完整代码数据)。

每出现一次AQI指数数值过大,可以肯定它都会引起我们足够的重视,提醒我们要保护我们生存的环境,尽可能地减少对环境的破坏与污染。而从更高的层次来说,消除或减少空气污染对人类的危害,唯一可行的就是提高我们的环保理念,并切实在日常生活中对环境加以保护。从机器学习的角度来说,根据已有数据可预测未来AQI浓度,也可以将空气质量分类为优良差等,对提高环境保护有重要意义。

机器学习研究

任务/目标:

根据已有AQI数据对其进行简单的聚类、分类、降维、相关性分析、预测、可视化等,对其探索得出相关结论,如使用k-means将数据聚类,将其分成适合的组数探究AQI数据的分布情况;使用回归预测未来的AQI;使用主成分分析对其降维并探究AQI气体的相关性;使用K-NN算法将AQI数据分类,给未来没有分类的数据自动分好类等。

数据源准备:

网络爬取别称数据提取,就是从指定的网站上收集数据信息。网络爬虫是一种程序,他可以高效的获取我们想要的数据,主要用于搜索引擎,通过使用request、scrapy、selenium等库获取该案例所需数据。如下图为部分数据:684c811a7b5d0d7e0d3c6b98a8d77aec.png

数据降维

AQI数据有多个变量,为了方便后续计算,使用主成分分析法将多个变量减少到两至三个:

2d400a1e22a2e4fae00a5ec8bd83fc6f.png

选择两个主成分即可保留数据集的大部分信息。

c3f5e6c610297d35ad17f432eba29b60.png

建模

k均值算法

根据空气质量数据将其分成合适的组数,探索各空气污染气体的分布情况。过程是先收集数据并选择合适的中心点,计算其他数据点到中心点的距离,计算平均值,将数据点分配到给他最近的聚类中心。

dd61cccbe60310c58e46edf5e67ca7fc.png


点击标题查阅往期内容

bafcfae6c572db7aa62605e5b477bf39.jpeg

R语言空气污染数据的地理空间可视化和分析:颗粒物2.5(PM2.5)和空气质量指数(AQI)

outside_default.png

左右滑动查看更多

outside_default.png

01

6196fc60bc9b62e9dbd11101af5332b7.png

02

1bee674f3d12642f67e62b9d6ef26261.png

03

0153e949309fefac68567ee1b8c96d12.png

04

652a035ad5f50fd0084f308ee8c25094.png

线性回归

回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。通常使用曲线/线来拟合数据点,目标是使曲线到数据点的距离差异最小。对大量的观测数据进行处理,从而得到比较符合事物内部规律的数学表达式。也就是说寻找到数据与数据之间的规律所在,从而就可以模拟出结果,也就是对结果进行预测。

0b08eb64ec6e2eb220d66fe0045b1cca.png

k近邻算法

给定一个训练数据集,对新的输入实例,在训练集中找到与该实例最临近,就把这个实例分配到这个类中。

c0318c13cb24795492de431acfce797c.png

当所预测的空气污染物PM2.5,PM10,O3,No2,Co,So2的含量分别为29,20,50,13,0.88,10μg/m3(CO为mg/m3)时,空气质量为优。空气质量令人满意,基本无空气污染,对健康没有危害,各类人群可多参加户外活动,多呼吸一下清新的空气。

d484ffd4f8307dbddccc26dcf47f95b7.png

937ecad91076eef8440013e3d9ac9fff.png

使用此模型,当测量出污染物指数时就可以预测空气的质量等级。每出现一次AQI指数数值过大,可以肯定它都会引起我们足够的重视,提醒我们要保护我们生存的环境,尽可能地减少对环境的破坏与污染。

Python 中深度学习模型(BiLSTM、GRU、LSTM 及 BiLSTM-CNN)的空气质量指数时间序列数据融合预测分析|附数据代码

接下来将探讨多种深度学习模型在空气质量指数时间序列预测与分析中的应用,通过对比不同模型的性能,以期找到更优的预测方法。

数据介绍

首先,我们获取了包含空气质量相关指标的数据集查看文末了解数据免费获取方式,其以表格形式呈现,包含了诸如年份(year)、月份(month)、日(day)、小时(hour)以及多种污染物浓度指标(如 PM2.5、PM10、SO2、NO2、CO、O3 等)以及气象相关数据(如温度 TEMP、气压 PRES、露点 DEWP、降雨量 RAIN、风向 wd、风速 WSPM 等)信息。

通过pandas库的相关函数对数据进行读取,代码如下:

import pandas as pd
import numpy as np
import seaborn as sns
from sklearn import preprocessing

这段代码的作用是导入所需的库,并将存储空气质量数据的csv文件读取到程序中,形成一个可供后续操作的数据框(DataFrame)对象,方便进行数据处理和分析。
接着,我们可以使用describe函数来查看数据的基本统计信息,比如均值、标准差、最小值、最大值等,代码如下:

data.describe()

这能帮助我们快速了解各指标数据的大致分布情况,为后续的数据预处理和模型构建提供参考依据。

数据预处理

原始数据可能存在一些缺失值等问题,为了保证模型训练的准确性,需要进行预处理。首先,我们使用如下代码去除含有缺失值的行:

data = data.dropna()

然后,针对部分指标计算其特定时间窗口内的平均值等统计量,比如对于PM10PM2.5等污染物指标,计算其 24 小时的平均浓度值,代码示例如下:

data\["PM10\_24hr\_avg"\] = data\["PM10"\].rolling(window = 24, min_periods = 16).mean().values

这些新生成的指标数据可以更好地反映污染物浓度在一定时间范围内的综合情况,有助于提升模型对空气质量变化趋势的捕捉能力。

深度学习模型应用

在完成数据预处理后,我们将应用多种深度学习模型来进行空气质量指数的预测,以下是不同模型的构建与训练过程。
(一)双向长短期记忆网络(BiLSTM)模型
双向长短期记忆网络(BiLSTM)能够同时考虑时间序列数据的正向和反向信息,对于捕捉时间序列中的长期依赖关系有较好的效果。其模型构建代码如下:

import tensorflow as tf
model_BiLSTM = tf.keras.Sequential(\[tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(100, return\_sequences=True), input\_shape=(n\_steps, n\_features)),

上述代码首先构建了一个包含两层双向 LSTM 层以及相应的Dropout层(用于防止过拟合)和输出层的序列模型,然后对模型进行编译,指定了优化器、损失函数以及评估指标等,最后通过summary函数查看模型的结构和参数信息。
使用tf.kel函数可以可视化模型结构,代码如下:

其生成的模型结构图片(如下所示)能让我们直观地看到各层的输入输出形状等关键信息。
202020fe76ed8d3c7f778cefcd8e8ac1.png
随后对模型进行训练,代码如下:

hist = model_BiLSTM.fit

训练完成后,可以使用训练好的模型进行预测,并计算相关的评估指标,如均方误差(MSE)等同时,还可以绘制预测值与真实值的对比图来直观地查看模型的预测效果

def plot\_predicted(predicted\_data, true_data):fig, ax = plt.subplots(figsize=(17,8))

其生成的对比图(如下所示)有助于我们直观判断模型预测的准确性。
c4953f793576d9fd99c8fa75e87f17f5.png
(二)门控循环单元(GRU)网络模型
门控循环单元(GRU)网络也是一种常用于处理时间序列数据的深度学习模型,相较于 LSTM 结构相对简单但同样能有效捕捉序列信息。其模型构建与训练过程如下:

from sklearn.metrics import mean\_squared\_error, mean\_absolute\_error, r2_score
regressorGRU = Sequential()
# 第一层 GRU 层并添加 Dropout 正则化
regressorGRU.add(GRU(units=50, return\_sequences=True, input\_shape=(X\_split\_train.shape\[1\],1), activation='tanh'))
regressorGRU.add(Dropout(0.2))
# 第二层 GRU 层
regressorGRU.add(GRU(units=50, return\_sequences=True, input\_shape=(X\_split\_train.shape\[1\],1), activation='tanh'))
......

这段代码构建了一个多层的 GRU 网络模型,每一层都设置了相应的参数和激活函数,并添加了Dropout层来防止过拟合,最后进行编译,同样通过summary查看模型结构和参数信息。

训练结束后,进行预测并计算诸如均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)以及 R2 分数等评估指标。同时,也可以绘制预测值与真实值的对比图来直观展示模型效果,代码和前面类似,此处不再赘述。另外,还可以绘制模型训练过程中的损失函数变化曲线以及准确率变化曲线等,代码如下:

plt.plot(hist.history\['accuracy'\])
plt.plot(hist.history\['val_accuracy'\])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(\['train', 'test'\], loc='upper left')
plt.show()
plt.plot(hist.history\['loss'\])
plt.plot(hist.history\['val_loss'\])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(\['train', 'test'\], loc='upper left')
plt.show()

生成的图片(如下所示)可以帮助我们分析模型是否存在过拟合等问题。
6a6441a22cff70ab3df7008e79f1644a.png
c3266ee4870a62a180705411c737da90.png
长短期记忆网络(LSTM)及其相关变体模型
除了上述的 BiLSTM 和 GRU 模型外,我们还应用了普通的 LSTM 以及 LSTM 与卷积神经网络(CNN)结合的模型(BiLSTM-CNN)来进行预测分析,其模型构建、训练和评估的过程与前面类似,只是在模型结构、参数设置等方面存在差异。

构建好模型后进行训练并在训练过程中记录相关指标,代码如下:

hist = model.fit(train_dataset,validation\_data = val\_dataset,epochs=50,callbacks=\[es,plateau\],verbose=1)

训练完成后同样进行预测以及评估指标计算、绘制对比图等操作,代码与前面类似,不再赘述。而对于 BiLSTM-CNN 模型,其结合了双向 LSTM 对时间序列的处理能力和卷积神经网络对局部特征提取的优势。

后续同样进行训练、预测以及相关指标评估和结果可视化等操作,通过这些不同模型的对比分析,我们可以更全面地了解各模型在空气质量指数时间序列预测中的表现优劣。

84dda809051d4c184de98f0efeccadca.png

cb18e902b190ea33651b4f8a9de949dd.png

b180012f9afbe87ed33d2289c61255c3.png

结果对比与分析

通过对上述多种深度学习模型在相同数据集上进行训练、预测,并计算相应的评估指标(如均方误差、均方根误差、平均绝对误差、R2 分数等),我们可以对比不同模型的性能。从不同模型的预测值与真实值对比图以及各项指标数值来看,不同模型在捕捉空气质量指数变化趋势以及预测准确性上各有差异。例如,部分模型在某些时间段的预测值与真实值贴合度较高,而有些模型则可能存在一定偏差。通过分析这些结果,可以为后续进一步优化模型或者选择更合适的预测模型提供参考依据,以便更准确地对空气质量指数进行预测,从而更好地服务于环境保护等相关工作。
总之,深度学习模型在空气质量指数时间序列预测方面有着较大的应用潜力,但不同模型的适用性和性能表现还需要根据具体的数据特点和应用场景等因素综合考量,未来还可以进一步探索模型改进以及融合等方法来提升预测的准确性和可靠性。

关于分析师

12ef5e84d3f561029d1629f10d2413bc.png

在此对 Zhixiong Weng 对本文所作的贡献表示诚挚感谢,他在桂林电子科技大学完成了物流管理(信息化)专业的学习,专注数据采集、数据分析以及机器学习领域。擅长 R 语言、Python、SQL,在利用机器学习对空气质量指数的研究方面颇有建树。

数据获取

在公众号后台回复“空气质量数”,可免费获取完整数据。

06cb91a28c2efef33a941b5e5281e6ce.jpeg

本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! 

e39f1ec5469e09c62cfb6be3f304b925.png


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

58aa1f132686dc68fc5d8b436ca94aa1.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《Python深度学习GRU、LSTM 、BiLSTM-CNN神经网络空气质量指数AQI时间序列预测及机器学习分析》。

点击标题查阅往期内容

【视频讲解】共享单车使用量预测:RNN, LSTM,GRU循环神经网络和传统机器学习|数据分享

视频:Python深度学习量化交易策略、股价预测:LSTM、GRU深度门控循环神经网络|附代码数据

Python用GRU神经网络模型预测比特币价格时间序列数据2案例可视化|附代码数据

【视频】LSTM模型原理及其进行股票收盘价的时间序列预测讲解|附数据代码

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测

结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

用PyTorch机器学习神经网络分类预测银行客户流失模型

PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告

R语言深度学习:用keras神经网络回归模型预测时间序列数据

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

MATLAB中用BP神经网络预测人体脂肪百分比数据

Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

R语言实现CNN(卷积神经网络)模型进行回归数据分析

SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

Python使用神经网络进行简单文本分类

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

R语言基于递归神经网络RNN的温度时间序列预测

R语言神经网络模型预测车辆数量时间序列

R语言中的BP神经网络模型分析学生成绩

matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

R语言实现拟合神经网络预测和结果可视化

用R语言实现神经网络预测股票实例

使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

3a28d3895f1f50a4f1be0119d93c9afd.jpeg

7f9bbd2e55dd5c1e939fa35355a937f1.png

13dd4eea8721af7f39e8e56106b6b85d.png

320d6430c4caffe0b692f25ad1ee5c63.jpeg

06b82a3208e747f4f31c7cc5b98e9f36.png

相关文章:

Python深度学习GRU、LSTM 、BiLSTM-CNN神经网络空气质量指数AQI时间序列预测及机器学习分析|数据分享...

全文链接:https://tecdat.cn/?p38742 分析师:Zhixiong Weng 人们每时每刻都离不开氧,并通过吸入空气而获得氧。一个成年人每天需要吸入空气达6500升以获得足够的氧气,因此,被污染了的空气对人体健康有直接的影响&…...

JSP基础

一、Tomcat 1.Tomcat简介: Tomcat是一个免费的开源JSP容器,是Apache的Jakarta项目中的一个核心项目因免费、稳定而成为目前比较流行的Web应用服务器网址:https://tomcat.apache.org/ 2.Tomcat的配置——环境变量 (1&#xff09…...

基于Springboot +Vue 在线考试管理系统

基于Springboot Vue 在线考试管理系统 前言 随着信息技术的飞速发展,教育领域正经历着深刻的变革。传统的考试模式因其诸多限制和不便,已难以满足现代教育的需求。基于SpringBoot和Vue框架开发的在线考试系统应运而生,它充分利用了现代互联…...

Node.js 函数

Node.js 函数 1. 概述 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它允许开发者使用 JavaScript 编写服务器端和网络应用程序。在 Node.js 中,函数是一等公民,意味着它们可以作为变量传递,可以作为参数传递给其他函数,也可以从其他函数返回。本文将详细…...

JVM学习指南(9)-JVM运行时数据区

JVM学习指南(9)-JVM运行时数据区 引言 Java虚拟机(JVM)是Java程序运行的核心,它为Java程序提供了一个与平台无关的执行环境。JVM的重要性不仅在于它实现了Java的跨平台特性,还在于它对程序执行过程中内存的管理。JVM运行时数据区是程序执行过程中存储数据的关键区域,理解…...

2025/1/4期末复习 密码学 按老师指点大纲复习

我们都要坚信,道路越是曲折,前途越是光明。 --------------------------------------------------------------------------------------------------------------------------------- 现代密码学 第五版 杨波 第一章 引言 1.1三大主动攻击 1.中断…...

关于嵌入式系统的知识课堂(二)

成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于嵌入式系统的知识课堂(…...

基于ETAS工具的AutoConnect实现方案

文章目录 前言基于ISOLAR工具实现AutoConnect基于脚本实现AutoConnect总结前言 Autosar软件架构设计中,Connect通常来自于Composition之间(Assembly connectors),Component之间(Assembly connectors),Component与Composition之间(Delegation connectors),还有一种Pa…...

BGP基础配置实验

一、实验拓补 二、实验要求及分析 实验要求: 1,R1为AS 100区域;R2、R3、R4为AS 200区域且属于OSPF协议;R5为AS 300区域; 2,每个设备上都有环回,且通过环回可以使设备互通; 实验分…...

基于单片机的人体健康指标采集系统设计

1.系统的功能及方案设计 根据系统设计要求,人体健康指标采集系统的系统结构框图如图2.1所示。系统以单片机作为主控核心,协调控制各个模块进行工作。在传感器检测模块中包括MAX30102心率血氧检测模块、体温检测模块、液晶显示模块。系统以无创的形式实现…...

Go语言性能优化-字符串格式化优化

在 Go 语言中,格式化字符串(例如使用 fmt.Sprintf、fmt.Printf 等函数)确实可能对性能产生影响,尤其是当频繁执行格式化操作时。格式化字符串涉及对格式符的解析和数据类型的转换,这会增加额外的开销。为了减少格式化字符串带来的性能影响,可以采取以下一些优化策略: 1…...

UE5失真材质

渐变材质函数:RadialGradientExponential(指数径向渐变) 函数使用 UV 通道 0 来产生径向渐变,同时允许用户调整半径和中心点偏移。 用于控制渐变所在的位置及其涵盖 0-1 空间的程度。 基于 0-1 的渐变中心位置偏移。 源自中心的径…...

SAP 01-初识AMDP(ABAP-Managed Database Procedure)

1. 什么是AMDP(ABAP-Managed Database Procedure) 1.)AMDP - ABAP管理数据库程序,是一种程序,我们可以使用SQLSCRIPT在AMDP内部编写代码,SQLSCRIPT是一种与SQL脚本相同的数据库语言,这种语言易于理解和编码。 将AM…...

关于视频审核,内容风控在“控”什么?

随着互联网用户每周上网时长的增加,内容偏好逐渐向视频形式转移,视频内容成为了企业竞争的新战场。然而,视频内容审核和风险控制成为了企业面临的重大挑战。那么在视频审核中,内容风控到底在“控”什么呢? 视频内容风…...

5G NTN(七) 高层(1)

说明:本专题主要基于3GPP协议38.821 目录 1. Idle态移动性增强 1.1 TA问题 1.1.1 TA的大小 1.1.2 针对NTN LEO的移动TA,场景C2和D2 1.1.3 针对NTN LEO的固定TA,场景C2和D2 1.1.3.1 方法1:当UE位置信息无法获取的时候 1.1.…...

专家混合(MoE)大语言模型:免费的嵌入模型新宠

专家混合(MoE)大语言模型:免费的嵌入模型新宠 今天,我们深入探讨一种备受瞩目的架构——专家混合(Mixture-of-Experts,MoE)大语言模型,它在嵌入模型领域展现出了独特的魅力。 一、M…...

《柴油遗产-无耻时代》V98375官方版

靠近你所在赛道上的另一名玩家进行攻击或防守,跳到另一条赛道上进行恢复,或闪到对手背后打他个措手不及。与队友合作,充分利用每个角色的独特玩法来控制战斗走向! 《柴油遗产-无耻时代》官方版 https://pan.xunlei.com/s/VODW7xDX…...

科技云报到:洞见2025年科技潮流,技术大融合开启“智算时代”

科技云报到原创。 随着2024年逐渐接近尾声,人们不禁开始展望即将到来的2025年。这一年,被众多科技界人士视为开启新纪元的关键节点。站在新的起点上,我们将亲眼目睹未来科技如何改变我们的世界。从人工智能到量子计算,从基因编辑…...

【openwrt】OpenWrt 路由器的 802.1X 动态 VLAN

参考链接 [OpenWrt Wiki] Wi-Fi /etc/config/wirelesshttps://openwrt.org/docs/guide-user/network/wifi/basic#wpa_enterprise_access_point 介绍 基于802.1X 无线网络身份验证࿰...

[coredump] 生成管理

在 Linux 系统中,core dump 文件的生成路径和文件名可以通过几个方面来控制: 系统默认路径: 默认情况下,core dump 文件通常生成在程序的工作目录,即程序运行时的当前目录。文件名通常为 core,或者在某些系…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...