2023.4.30 第五十一次周报

news2024/11/25 22:35:30

目录

前言

文献阅读

背景

对现有技术的分析

主要思路和贡献

相关性分析和归一化处理

相关性分析

归一化处理

TCN

基于 TCN-LSTM 的 PM 浓度预测模型

敏感性分析

论文思路

求半方差

训练模型 -1

 训练模型-2

总结


前言

This week I studied an article that constructed a TCN-LSTM model to predict atmospheric PM concentrations. Among them, TCN is a simple CNN model, which is mainly used to solve time series problems, and its role is to ensure the stability of data feature extraction. PM concentration prediction is a time series prediction problem with nonlinear characteristics, and LSTM is used to deal with it because the LSTM model, as a variant of classical RNNs, has nonlinear entity fitting ability, making it suitable for dealing with sequential modeling problems. Finally, the study employs the sensitivity analysis method Sobol, a global sensitivity analysis method based on ANOVA that can be used to analyze the degree to which multiple parameters affect the output of the model. In addition, there have been new developments in the application of kriging interpolation.

本周我学习了一篇文章,该研究构建了TCN-LSTM模型来预测大气PM浓度。其中TCN是一种简单的CNN模型,主要用于解决时间序列问题,作用是保证数据特征提取的稳定。PM浓度预测是一个具有非线性特征的时间序列预测问题,采用LSTM来处理是因为LSTM 模型作为经典 RNN 的变体,具有非线性实体拟合能力,使其适用于处理顺序建模问题。最后一点是该研究采用了敏感性分析方法Sobol,这是一种基于方差分解的全局敏感性分析方法,可用于分析多个参数对模型输出结果的影响程度。除此之外,在克里金插值法的应用上,有了新的进展。

文献阅读

--Ying Ren, Siyuan Wang, Bisheng Xia,
Deep learning coupled model based on TCN-LSTM for particulate matter concentration prediction,
Atmospheric Pollution Research,
Volume 14, Issue 4,
2023,
101703,
ISSN 1309-1042,
https://doi.org/10.1016/j.apr.2023.101703.

背景

大气颗粒物(PM)是雾霾天气发生的主要因素之一,在全球范围内越来越受到关注。大气中的PM主要包括PM2.5(空气动力学直径为 <2.5 μm)的 PM 和 PM10(空气动力学直径为 <10 μm) 的 PM),主要包括水溶性离子、PM 和有机物。PM的来源可分为两大类:天然来源和人工来源。自然来源主要包括岩石和土壤的风化、森林火灾、火山喷发和海盐颗粒,而人工来源主要包括车辆尾气排放、工业排放、建筑工地粉尘和垃圾焚烧。大气PM浓度的增加会导致人们呼吸道疾病和心血管疾病增加的可能性,也推动了全球气候的变化。PM的准确高效预测在雾霾天气管理和人类可持续发展方面具有不可忽视的作用。

对现有技术的分析

目前用于大气PM预测的主要方法包括基于物理的机理模型和数据驱动的统计模型。机制模型主要包括社区多尺度空气质量模型,操作街道污染模型和嵌套空气质量预测模型。区域大气动力学天气研究与预报模型结合化学广泛用于模拟PM的形成和分散。然而,这种机械模型的使用是基于特定条件的假设,现实的表示往往是可变的。默认参数设置限制了机理模型的性能,导致精度低于特定地点的经验空气质量预测模型。

传统的统计模型不使用复杂的物理参数,而是根据历史数据预测空气污染物浓度。例如,多元线性回归,自回归积分移动平均线以及地理和时间加权回归模型将变量之间的关系视为线性关系,与大多数现实世界的情况相反。为了解决这个问题,许多研究人员使用非线性机器学习技术(例如人工神经网络)预测了大气污染物的浓度,随机森林(RF)和支持向量回归 (SVR)方法。然而,随着数据量和模型训练时间的增加,此类模型方法的特征提取能力和学习能力下降,从而导致模型预测精度下降。更重要的是,此类模型没有存储单元,无法解释污染物数据的时间特征。一些学者将机器学习模型与其他模型结合使用来研究 PM,这些组合模型的思想为大气PM研究提供了新的思路。

近年来,随着深度学习的兴起,许多研究已将此类技术应用于环境领域,其中使用最广泛的深度学习方法是递归神经网络 (RNN) 模型和卷积神经网络 (CNN) 模型。由于其独特的自环结构,适用于处理顺序数据,RNN 已被应用于预测 PM 浓度。然而,RNN模型存在长期依赖性和梯度消失问题,这些问题可以通过派生的长短期记忆(LSTM)网络模型很好地解决。LSTM方法在环境预测中的应用通常与CNN模型相结合,可以并行处理信息,具有强大的特征提取能力。因此,CNN-LSTM 模型适用于空气质量指数的预测和其他大气物质。但是,CNN结构复杂,当输入和输出信息的维度不同时,可能会导致信息丢失。为了解决这个问题,有学者提出了时间卷积网络(TCN)。TCN既具有CNN的并行特性,又具有RNN的记忆功能。TCN可以对复杂的序列数据进行快速特征提取,并确保输入和输出信息的维度相同。其优异的特征提取能力在恶劣天气预报、短期交通预测、多变量时间序列预测和计算机视觉等领域得到广泛利用,并且所有此类应用都报告了令人满意的结果。

深度学习模型的性能受输入的影响,识别此类模型的关键输入变量有利于提高预测效率和降低建模成本。更重要的是,大气污染物的形成很复杂,深度学习模型无法识别污染物的主导因素。敏感性分析方法在环境领域用于识别影响模型输出、减少模型输入和避免参数冗余的关键变量,同时分析模型输入变量与目标输出之间的不确定关系以提高模型适用性。敏感性分析与深度学习模型相结合不仅可以帮助模型消除不必要的输入,还可以解释模型的目标输出,以揭示不同影响因素对城市空气污染物的影响。

主要思路和贡献

于上述分析,本研究结合TCN和LSTM模型,设计了一种新的颗粒浓度预测模型TCN-LSTM模型。本文的主要著作有:

(1)构建了TCN-LSTM混合模型,选取低成本、现成的气象因子和污染物浓度数据进行建模。TCN模型从PM的影响因素中提取特征。LSTM模型学习提取的特征来预测西安市大气中的PM浓度。将预测结果与经典深度学习模型(CNN-LSTM、LSTM、TCN)和机器学习(SVR和RF)进行比较,并通过RMSE、MSE、MAE和R进行对比和验证。2指标,结果表明TCN-LSTM表现更好。此外,TCN-LSTM模型还用于预测北京、上海、成都和深圳的PM浓度,该模型仍然表现良好。在交叉验证的实验中,TCN-LSTM模型仍然表现稳定;

(2)采用敏感性分析法研究各影响因素对西安市疫情前(2015—2019年)和疫情后(2020—2022年)PM浓度的影响,并与2015—2022年全期敏感性分析结果进行比较;

(3)使用灵敏度分析方法来评估模型的输入变量对目标输出的贡献程度。利用对模型输出贡献较大的参数,构建PM浓度快速预测模型,降低建模成本。

相关性分析和归一化处理

相关性分析

其中PM之间的相关性最高PM2.5和PM10,皮尔逊系数为0.86。两位PM2.5和PM10是大气中的PM并且相似。因此,使用一个模型进行PM研究就足够了。

归一化处理

数据,包括风速(WS),风向(WD),相对湿度(RH),降水(PR),压力(P)温度(T),露点(DP)和太阳辐照度(SI)。在这项研究中,PM指标用作输出变量,其他指标用作输入变量。使用以下归一化公式对每个变量(风向除外,风向数据转换为独热代码)进行归一化,消除了可归因于维度差异的误差

TCN

一旦扩张的因果卷积完成,使用WeightNorm对每层的权重进行归一化,使用激活函数Relu进行非线性计算,Dropout操作控制丢弃神经元的概率以使某些神经元失活以避免过度拟合。如果残差块的输入和输出向量形状不同,则使用一维卷积改变输入信息的维数,驱动网络产生与输入相同维数的输出。 

基于 TCN-LSTM 的 PM 浓度预测模型

TCN独特的一维因果卷积结构保证了数据的时间序列特征,残差连接单元加速了网络的收敛速度,扩展卷积保证了所有数据特征的提取。LSTM 模型作为经典 RNN 的变体,具有非线性实体拟合能力,使其适用于处理顺序建模问题。PM浓度预测是一个具有非线性特征的时间序列预测问题。影响PM浓度的因素有颗粒物本身浓度的增加/减少、大气中其他污染物的含量以及气象因素。本研究将TCN模型与LSTM模型相结合,构建了考虑多因素形成和颗粒非线性特征的大气PM浓度预测TCN-LSTM模型。TCN-LSTM模型的架构如图所示,预测PM浓度的主要过程如下所述。

(1)获取的气象和污染物数据经过处理,按照特定比例分为测试集和训练集。训练集用于调整模型的超参数。训练集作为TCN模型的输入,TCN模型对输入信息进行特征提取。TCN模型提取数据后,数据的杂质将大大减少,特征暴露更加明显,有利于LSTM模型的学习。

(2)TCN模型提取的特征输入到LSTM模型,LSTM模型通过遗忘门、输入门和输出门控制网络的输出,记住需要长期记忆的关键信息,忘记不重要的信息,使模型能够处理长期串行数据,准确预测下一刻PM的浓度。

(3)将训练集的预测目标与预测结果进行比较,计算训练集的损失,确定损失最小化,并确定模型参数,以确保模型得到最佳调优。测试集用作模型的输入,以验证损失是否最小化并完成预测任务。

本研究中使用的程序是用Python语言编写的,基于TensorFlow 2.0框架。使用亚当优化器对整个模型进行优化,将均方误差(MSE)函数用作模型的损失函数(Nhu等人,2020),并通过训练不断调整每个模型参数。整个过程可以表示如下:

其中功能1表示TCN层学习的结果,TCN(⋅)表示TCN层和TCN层相关的操作,特征2表示 LSTM 层学习的结果,LSTM(⋅) 表示与 LSTM 层和 LSTM 层相关的运算,a(xt) 表示归一化后的相关序列信息,Fxt) 表示模型的输出,Linear(⋅) 表示全连接层的线性映射。

以1年2015月8日至2021年9月2021日的数据作为训练集来训练每个模型条目,将9年2022月<>日至<>年<>月<>日的数据作为测试集,使用训练好的模型测试模型。均方根误差 (RMSE)、平均绝对误差 (MAE)、MSE 和相关系数 (R2)被选为评估模型预测能力的指标。

敏感性分析

论文思路

求半方差

假设已有实验数据,包括一组空间位置坐标和对应的半方差值(半方差表示空间点间的相似度),那么可以用以下Python代码计算克里金插值的半方差:

这段代码使用了numpy和scipy库,其中get_semivariance函数用于计算输入数据的半方差函数,krige_semivariance函数则是克里金插值法的核心实现。该函数接受三个参数:输入数据、空间坐标、最大距离和分bin数目。输出为一个长度为num_bins的半方差数组。

import numpy as np
from scipy.spatial.distance import pdist, squareform

# 根据输入数据计算半方差函数
def get_semivariance(data, max_dist, num_bins):
    dist_matrix = squareform(pdist(data[:, :2]))
    bins = np.linspace(0, max_dist, num_bins)
    semivariance = np.zeros(num_bins)

    for i in range(num_bins):
        indices = np.where((dist_matrix >= bins[i]) & (dist_matrix < bins[i+1]))
        if len(indices[0]) > 0:
            semivariance[i] = 0.5 * np.mean((data[indices[0], 2] - data[indices[1], 2])**2)

    return semivariance

# 克里金插值法计算半方差
def krige_semivariance(data, coords, max_dist, num_bins):
    semivariance = get_semivariance(data, max_dist, num_bins)
    X = coords[:, 0]
    Y = coords[:, 1]

    # 计算距离矩阵
    dist_matrix = squareform(pdist(coords))

    # 初始化变量
    n = len(coords)
    A = np.ones((n+1, n+1))
    A[:n, :n] = -0.5 * dist_matrix**2 * semivariance[1]
    A[n, :] = 1
    A[:, n] = 1
    A[n, n] = 0

    b = np.zeros(n+1)
    b[-1] = 1

    # 求解线性方程组
    weights = np.linalg.solve(A, b)

    # 计算半方差函数值
    h = np.zeros(num_bins)
    for i in range(num_bins):
        r = bins[i] * np.ones((n, n)) + dist_matrix
        h[i] = np.sum(weights[:-1] * semivariance[np.digitize(r.flat, bins)])

    return h

训练模型 -1

将克里金插值法的半方差作为输入数据,输出数据则可以根据具体问题而定。假设我们的问题是预测某个位置的空气质量指数(AQI),那么输出数据就是该位置对应的 AQI 值。

这里使用 Keras 的 Sequential API 构建了一个简单的 LSTM 模型。其中 units 参数表示 LSTM 层的神经元数量,input_shape 参数表示输入数据的形状,即 (batch_size, time_steps, features)Dense 层用于将 LSTM 层的输出连接到一个全连接层以产生最终的输出。模型使用均方误差(MSE)作为损失函数,Adam 优化器进行训练。

在完成模型训练后,可以将其保存到文件中以备后续使用。

下面是一个简单的 LSTM 模型代码:

import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

# 加载训练集和测试集
X_train = np.load('X_train.npy') # 训练集输入数据
y_train = np.load('y_train.npy') # 训练集输出数据
X_test = np.load('X_test.npy')   # 测试集输入数据
y_test = np.load('y_test.npy')   # 测试集输出数据

# 定义 LSTM 模型
model = Sequential()
model.add(LSTM(units=64, input_shape=(X_train.shape[1], X_train.shape[2])))
model.add(Dense(units=1))
model.compile(optimizer='adam', loss='mse')

# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))

# 保存模型
model.save('lstm_model.h5')

 训练模型-2

如果输入函数除了克里金插值法的半方差之外,还有其他特征,比如位置的湿度,那么可以将这些特征一起作为 LSTM 模型的输入。假设数据集包含以下特征:

  • 半方差
  • 湿度
  • 经度
  • 纬度

那么可以按照以下方式准备训练和测试数据:

import numpy as np

# 加载数据集
data = np.load('data.npy')  # 包含全部特征的数据集,形状为 (num_samples, num_features)

# 提取半方差、湿度、经度和纬度特征
semivariance = data[:, 0]
humidity = data[:, 1]
longitude = data[:, 2]
latitude = data[:, 3]

# 将特征组合成训练和测试数据
X_train = np.zeros((num_train_samples, time_steps, num_features))
y_train = np.zeros((num_train_samples, 1))
X_test = np.zeros((num_test_samples, time_steps, num_features))
y_test = np.zeros((num_test_samples, 1))

for i in range(num_train_samples):
    X_train[i, :, 0] = krige_semivariance(train_data[i], coords, max_dist, num_bins)
    X_train[i, :, 1] = train_data[i][:, 2]  # 湿度特征
    X_train[i, :, 2] = train_data[i][:, 0]  # 经度特征
    X_train[i, :, 3] = train_data[i][:, 1]  # 纬度特征
    y_train[i, 0] = train_data[i][0, 3]     # AQI 输出值

for i in range(num_test_samples):
    X_test[i, :, 0] = krige_semivariance(test_data[i], coords, max_dist, num_bins)
    X_test[i, :, 1] = test_data[i][:, 2]
    X_test[i, :, 2] = test_data[i][:, 0]
    X_test[i, :, 3] = test_data[i][:, 1]
    y_test[i, 0] = test_data[i][0, 3]

在这个例子中,我们将半方差、湿度、经度和纬度四个特征组合成了输入数据。X_trainX_test 的形状分别为 (num_train_samples, time_steps, num_features)(num_test_samples, time_steps, num_features),其中 time_steps 表示时间步长,num_features 表示每个时间步长的特征数。y_trainy_test 则表示对应的输出值。

有了完整的输入数据后,就可以按照之前的代码编写 LSTM 模型了,只需要增加一个 input_shape 参数即可:

model = Sequential()
model.add(LSTM(units=64, input_shape=(time_steps, num_features)))
model.add(Dense(units=1))
model.compile(optimizer='adam', loss='mse')
model.fit(X_train, y_train, epochs=50, batch_size=32, validation_data=(X_test, y_test))

这里的 input_shape 参数为 (time_steps, num_features),对应于输入数据的形状。如果希望在 LSTM 层之前添加其他层(如卷积层或池化层),需要根据具体情况调整 input_shape 参数。 

总结

放假期间事情比较多,学的东西一知半解。下周我将对于论文的整体思路展开分析,希望能尽快完成整篇论文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/478039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R语言 | 进阶字符串的处理

目录 一、语句的分割 二、修改字符串的大小写 三、unique()函数的使用 四、字符串的连接 4.1 使用paste()函数常见的失败案例1 4.2 使用paste()函数常见的失败案例2 4.3 字符串的成功连接与collapse参数 4.4 再谈paste()函数 4.5 扑克牌向量有趣的应用 五、字符串数据的…

vue前端开发100问(持续更新)

1.export default的作用是 export主要用于对外输出本模块变量的接口&#xff0c;一个文件就可以被理解为一个模块。export就是导出。 import就是在一个模块中加载另一个含有export接口的模块&#xff0c; import就是导入。 2.什么样的内容需要放在export default里面&#xf…

mybatis使用(简单易上手)

mybatis使用 一、mybatis介绍1、mybatis是什么2、mybatis支持的数据库3、~~mybatis插件机制~~ 二、springboot集成mybatis1、引入依赖2、配置mybatis 三、使用mybatis1、注解方式使用mybatis2、XML文件方式 一、mybatis介绍 1、mybatis是什么 MyBatis是一个开源的Java持久层框…

第十七章 预制件prefab(下)

本章节我们来讲解如何编辑预制体文件。这里介绍三种打开编辑预制件的方式。第一就是通过预制件的实例游戏对象的Inspector检视面板上面的预制件“打开”按钮。 第二就是在Project工程面板中选中预制件文件&#xff08;Cube.prefab&#xff09;&#xff0c;然后在Inspector检视面…

山东专升本计算机第八章-多媒体技术基础

多媒体技术基础 多媒体技术 考点 7 图形/图像处理软件 图形/图像文件格式 • BMP • windows系统下的标准位图格式 • 未经压缩 • JPEG&#xff08;联合图像专家组&#xff09; • 有损压缩格式&#xff0c;色数量高达24位&#xff0c;广泛应用于Internet上的主页或图片…

excel实战小测第四

【项目背景】 本项目为某招聘网站部分招聘信息&#xff0c;要求对“数据分析师”岗位进行招聘需求分析&#xff0c;通过对城市、行业、学历要求、薪资待遇等不同方向进行相关性分析&#xff0c;加深对数据分析行业的了解。 结合企业真实招聘信息&#xff0c;可以帮助有意转向数…

【艾特淘】淘宝“客服3分钟响应率”考核调整

淘宝商家“客服3分钟响应率”考核调整&#xff0c;还不知道的商家赶紧来看看&#xff0c;具体都有哪些变化哦~ 一、考核范围 考核范围对象为店铺正常状态&#xff0c;达到一定经营模式的淘宝卖家。 此对象定义为&#xff1a;卖家的商家层级达到5以上&#xff0c;同时还将考虑…

C++实现二叉搜索树

文章目录 前言1.二叉树搜索树的相关介绍2.二叉搜索树的实现1.二叉搜索树插入数据的实现2.二叉搜索树的查找实现3.二叉搜索树的删除实现4.构造函数和析构函数以及赋值重载的实现 3.二叉搜索树的应用1.将之前的K模型二叉搜索树改造成KV模型2.代码演示 4.二叉搜索树的性能分析 前言…

本地Linux服务器安装宝塔面板,并公网远程登录【内网穿透】

文章目录 前言1. 安装宝塔2. 安装cpolar内网穿透3. 远程访问宝塔4. 固定http地址5. 配置二级子域名6. 测试访问二级子域名 前言 宝塔面板作为建站运维工具&#xff0c;它支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能&#xff0c;可提高运维效率。…

人工智能导论:模型与算法,附录实验三:线性回归模型

本人研一&#xff0c;简单记录下上课的大作业&#xff0c;如果你不会自己写&#xff0c;相信你有缘能找到这篇博客 线性回归模型 1.实验内容 图像是一种非常常见的信息载体&#xff0c;但是在图像的获取、传输、存储过程中可能由于各种原因使得图像受到噪声的影响。如何去除…

程序员如何通过创作图文项目实现自己的代码价值

本文阅读适合人群&#xff1a; 1.程序员 2.图文赛道创业者 项目背景&#xff1a; 毫无疑问&#xff0c;这是一个优质内容的时代&#xff0c;从某种意义上说&#xff0c;优质内容Money。优质内容的形式包含很多&#xff0c;在头条的定义中包括&#xff1a;纯文字&#xff08;…

存储资源调优技术——SmartTier智能分级技术、SmartQoS智能服务质量控制技术

目录 SmartTier智能分级技术 基本概述 工作原理 实现SmartThier数据迁移的三个阶段 应用场景 SmartQoS智能服务质量控制 基本概念 两种关键技术 应用场景 SmartTier智能分级技术 基本概述 自动将不同活跃的数据和不同特点的存储介质动态匹配&#xff0c;提高性能。 NL…

ETL工具 - Kettle 转换算子介绍

一、Kettle 转换算子 上篇文章对 Kettle 中的输入输出算子进行了介绍&#xff0c;本篇文章继续对转换算子进行讲解。 下面是上篇文章的地址&#xff1a; ETL工具 - Kettle 输入输出算子介绍 转换是ETL里面的T&#xff08;Transform&#xff09;&#xff0c;主要做数据转换&am…

开放式基金净值估算数据 API 数据接口

开放式基金净值估算数据 API 数据接口 全量基金数据&#xff0c;实时数据&#xff0c;所有基金数据。 1. 产品功能 返回实时开放式基金净值估值可定义所有基金估值数据&#xff1b;多个基金属性值返回&#xff1b;多维指标&#xff0c;一次查询毫秒级返回&#xff1b;数据持续…

领域驱动设计事件驱动框架命令查询责任分离测试驱动开发

领域驱动设计: DDD 事件驱动框架: Event Driven Architecture 命令查询责任分离: CQRS(Command Query Responsibility Segregation) 测试驱动开发: TDD 先睹为快&#xff1a;架构图 入口&#xff1a;entrypoint 入口是系统外部客户访问系统内部的端口。常见的入口如http, …

算法刷题|647.回文子串、516.最长回文子序列

回文子串 题目&#xff1a;给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的字符…

【redis】redis分布式锁(三)自动续期

系列文章目录 【redis】redis分布式锁&#xff08;一&#xff09;手写分布式锁1.0~6.0 【redis】redis分布式锁&#xff08;二&#xff09;可重入锁设计模式 文章目录 系列文章目录前言一、CAPredis集群 APZooKeeper集群 CP 数据一致性Eureak集群 APnacos集群 AP 二、lua脚本脚…

1 认识仿真工具Packet Tracer【实验】【计算机网络】

1 认识仿真工具Packet Tracer【实验】【计算机网络】 前言推荐1 认识仿真工具Packet Tracer1.1账号注册与Packet Tracer软件下载1.1.1 下载1.1.2 安装 1.2 Packet Tracer界面简介1.2.1 总述1.2.2 详细 1.3网络拓扑构建与设备模块添加1.3.1如何往工作区中添加设备1.3.2添加连线1…

【计算机网络】1.1——因特网概述

因特网概述&#xff08;了解&#xff09; 网络、互联网和因特网 网络由若干结点和连接这些结点的链路组成 多个网络还可以通过路由器互连起来&#xff0c;互联网是"网络的网络“ internet 和 Internet internet&#xff08;互联网或互连网&#xff09;是通用名词 泛指…

Java 基础入门篇(四)——— 方法的重载与参数传递机制

文章目录 一、方法的定义二、方法的参数传递机制 ★2.1 基本类型的参数传递2.2 引用类型的参数传递 三、方法重载 一、方法的定义 方法的作用&#xff1a;封装一段代码的语法结构&#xff0c;可以被重复调用&#xff0c;以此提高代码的复用性&#xff0c;提高开发效率&#xf…