机器学习周报-文献阅读

文章目录

    • 摘要
    • Abstract
  • 1 相关知识
    • 1.1 WDN建模
    • 1.2 掩码操作(Masking Operation)
  • 2 论文内容
    • 2.1 WDN信息的数据处理
    • 2.2 使用所收集的数据构造模型
      • 2.2.1 Gated graph neural network
      • 2.2.2 Masking operation
      • 2.2.3 Training loss
      • 2.2.4 Evaluation metrics
    • 2.3 结果和讨论
      • 2.3.1 Masking operation对模型精度的影响
      • 2.3.2 节点级预测精度
      • 2.3.3 不同传感器放置策略对预测精度的影响
  • 3 相关代码
    • 总结

摘要

本周阅读了一篇在稀疏监测数据下基于图神经网络的给水管网水质实时预测论文,文章提出了一种新的门控图神经网络(GGNN)模型用于水分配网络(WDNs)的实时水质预测。该模型整合水力流向和水质数据,采用掩蔽操作提高预测精度。通过实际WDN评估,GGNN模型能在整个网络实现准确水质预测,基于水质的传感器放置可提高预测精度,此研究为WDN建模中用机器学习模型替代水力模型迈出第一步。同时,结合论文相关知识对掩码操作和GRU原理和代码进行补充学习。

Abstract

This week, I read a paper on real-time water quality prediction in water distribution networks (WDNs) based on graph neural networks under sparse monitoring data. The paper proposes a novel Gated Graph Neural Network (GGNN) model for real-time water quality prediction in WDNs. The model integrates hydraulic flow direction and water quality data and employs a masking operation to improve prediction accuracy. Through evaluation on a real WDN, the GGNN model can achieve accurate water quality prediction across the entire network. The placement of water quality sensors can enhance the prediction accuracy. This study takes the first step in replacing hydraulic models with machine learning models in WDN modeling. In addition, I supplemented my learning on masking operations and the principles and code of GRU based on the relevant knowledge in the paper.

1 相关知识

1.1 WDN建模

供水管网(Water Distribution Network)建模,供水管网是城市供水系统的重要组成部分,其建模的目的是通过数学和计算方法来模拟和分析管网中的水力行为,包括水流、压力分布、水质传输等。以下是WDN建模的一些关键内容:
水力模型: 模拟管网中的水流和压力分布。常用的工具有EPANET,它是一个广泛应用于水力模拟的软件,可以处理稳态和瞬态模拟
水质模型: 用于模拟水质在管网中的传输和变化。近年来,机器学习方法也被引入到水质预测中
拓扑结构: 通过图论方法表示管网的连接关系,包括节点(如水库、储罐、用户节点)和边(如管道、阀门、泵站)

1.2 掩码操作(Masking Operation)

掩码操作(Masking Operation)是一种在机器学习和深度学习中常用的技术,主要用于在训练过程中隐藏或过滤部分输入数据,以增强模型的泛化能力和鲁棒性。其基本思想是在训练过程中随机隐藏部分输入数据,让模型通过上下文信息来预测被隐藏的部分。这种技术可以防止模型过度依赖有限的输入数据,从而提升模型的泛化能力

在机器学习中,掩码操作常用于处理稀疏数据或模拟数据缺失的情况。例如,在图神经网络(GNN)中,掩码操作可以隐藏部分节点的输入数据,让模型学习如何利用已知节点的信息来预测未知节点的状态。

在供水管网(WDN)建模中,掩码操作被用于增强模型对未监测节点的预测能力。具体方法是:在训练过程中,随机选择一定比例的传感器节点,并将其输入替换为零,从而模拟未监测节点的情况。 这种方法不仅提高了模型的泛化能力,还防止了过拟合

在实际应用中,掩码操作可以通过以下步骤实现:

  1. 选择掩码比例: 根据任务需求,随机选择一定比例的输入数据进行掩码。
  2. 应用掩码: 将选定的数据替换为零或其他占位符
  3. 训练模型: 在掩码数据上训练模型,让模型学习如何利用上下文信息进行预测

掩码操作是一种强大的技术,能够显著提升模型在处理稀疏数据和复杂任务时的性能。它在图神经网络、自然语言处理和供水管网建模中的应用展示了其广泛的应用前景

2 论文内容

论文题目:Real-time water quality prediction in water distribution networks using graph neural networks with sparse monitoring data
期刊:Water Research
中科院分区:环境科学与生态学1区

现有问题:

  1. 现有的基于水力模型的系统状态预测方法在有限的传感器数据和密集的计算要求下面临模型校准的挑战
  2. 当前的机器学习模型缺乏预测未被监测或未被包括在模型训练中的站点处的系统状态的能力

创新点:论文提出了一种新的门控图神经网络(GGNN)模型,用于WDN中的实时水质预测。
GGNN模型集成了水流方向和水质数据来表示拓扑结构和系统动力学,并采用掩蔽操作进行训练以提高预测精度。

2.1 WDN信息的数据处理

GGNN模型需要两种类型的数据:WDN拓扑和传感器监测站的历史水质监测数据。

在这里插入图片描述

假设WDN包括n个节点和m个管道,在 N s N_s Ns个传感器站处监测水质。网络拓扑由图G =(V,E)表示,其中V表示包括水库、罐和接头的节点集,并且E表示包括管道、阀门和泵的边集。网络的流向信息和空间拓扑细节通常可以从EPANET等水力模型中获得。利用这些数据构造有向图的邻接矩阵 A ∈ R n × n A\in R^{n×n} ARn×n,其中每个元素 A i j A_{ij} Aij表示水是否从节点 i i i 流向节点 j j j A i j A_{ij} Aij= 1)或不流向节点j( A i j A_{ij} Aij= 0)

其中,数据采集过程包括在指定的时间窗口(表示为 T c T_c Tc)内捕获水质测量值,该时间窗口表示过去收集的历史数据的持续时间。然后将收集的数据用作数据集中被监控节点的节点属性,对于未监控节点,可以将空值替换为0,从而得到节点属性 X ∈ R n × N c X\in R^{n×N_c} XRn×Nc。其中 N c N_c Nc表示在数据收集周期 T c T_c Tc期间获得的水质测量值的数量,其对应于指定时间窗口内的时间步长的数量。它可以作为预测下一个时间步的水质所需的数据大小的指标。

2.2 使用所收集的数据构造模型

2.2.1 Gated graph neural network

在这里插入图片描述
图中:n表示图大小, N c N_c Nc表示节点属性大小, M M M表示隐藏状态大小

第一步: 扩展邻接矩阵 A ∈ R n × n A\in R^{n×n} ARn×n 来准备输入,在有向图中包含双向信息流。通过将A与其转置连接,从而形成扩展邻接矩阵 A ^ = [ A , A T ] \hat{A} = [A,A^T] A^=[A,AT]。同时考虑入边和出边, A ^ ∈ R n × 2 n \hat{A} \in R^{n×2n} A^Rn×2n捕捉节点间的复杂关系和消息传播方向,从而增强了GGNN的双向学习能力。
第二步: 节点 v x v v x_v vxv的节点属性经由具有整流线性单元(ReLU)激活函数的标准线性组合被映射到从原始空间 R N c R^{N_c} RNc到新空间 R M R^M RM的原始隐藏状态 h v ( 0 ) h_v^{(0)} hv(0)。这个映射过程有效地扩大了节点属性的大小,允许GGNN捕获节点属性之间潜在的重要非线性关系。由M表示的隐藏状态的大小是确定模型容量的超参数。

第三步: GGNN将扩展邻接矩阵 A ^ = [ A , A T ] \hat{A} = [A,A^T] A^=[A,AT]和映射的节点属性 h ( 0 ) h^{(0)} h(0)作为输入,在固定的K步上递归计算节点状态,以产生最终的状态矩阵 h ( K ) ∈ R n × M h_{(K)}\in R^{n×M} h(K)Rn×M。GGNN中的节点状态更新过程包括两个基本步骤:聚合和传播
在聚合期间,使用扩展邻接矩阵 A ^ \hat A A^来计算聚合向量 a v a_v av,聚合向量 a v a_v av表示节点v的其相邻节点的状态的聚合。使用以下等式来计算聚合向量:

在这里插入图片描述

其中其中上标k表示时间步长, A v ∈ R n × 2 A_v\in R^{n×2} AvRn×2 是块A中对应于节点v的两列,b表示偏置向量。

在聚合步骤之后,传播步骤采用门控递归单元(GRU)机制来更新节点状态。 GRU传播方程可以描述如下:
在这里插入图片描述

其中,r和z是重置门和更新门 W r W_r Wr W z W_z Wz W W W and U r U_r Ur U z U_z Uz U U U是每层的权重和偏置; σ ( ⋅ ) \sigma(·) σ()是sigmoid激活函数; 是逐元素乘法。

GGNN中的聚合和传播步骤允许模型迭代更新和细化节点状态,合并来自节点先前表示及其相邻节点的信息。这个迭代过程捕获图结构中的动态和交互,使GGNN能够学习和表示节点之间的复杂关系和依赖关系。传播步数K决定了GGNN中信息传播的深度。当K = 1时,每个节点只能从其直接相邻节点学习。随着K的增加,GGNN可以从K步之外的节点捕获信息,包括它们的间接连接。K的选择影响模型的学习能力和效率。较高的K值会导致训练速度较慢,内存需求增加,而较低的K值会限制每个节点可以学习的依赖关系数量。因此,K的选择应该在模型性能和计算效率之间取得平衡。

在使用GRU模块更新节点状态之后,使用线性层将更新的状态 h ( K ) h^{(K)} h(K)转换为表示每个节点的预测状态的 Y ^ ∈ R n \hat Y \in R^n Y^Rn。在这项研究中,节点属性是历史水质浓度数据,其预测状态代表模型对每个节点下一个时间步的水质浓度的预测。这种转换允许模型基于其更新的表示和从邻近的相邻节点传播的信息来生成每个节点处的水质预测。

2.2.2 Masking operation

使用的两个主要目的:

1 它在训练过程中模拟来自非传感器节点的数据的不可用性,使模型能够泛化到观察到的传感器数据之外,并学习预测未监测节点的值
2 它作为一种正则化技术,防止模型仅仅依赖于有限的传感器输入。通过鼓励模型捕捉传感器节点和未监测节点之间的关系,它促进了更好的泛化,并降低了过拟合的可能性。

需要研究屏蔽节点的比例,因为它平衡了模型性能和过拟合。更高的利率减少了可用的信息,增加了适应不足的风险。较低的速率提供更多的信息,但可能导致过拟合。仔细的考虑对于选择最佳的泛化掩蔽率和避免过拟合是至关重要的。

2.2.3 Training loss

作者使用平均绝对误差(MAE)作为训练损失函数。它测量传感器节点的预测和真实水质值之间的平均绝对差。训练损失(L)计算如下:
在这里插入图片描述

其中, N s N_s Ns是传感器节点的数量, T t r a i n T_{train} Ttrain是训练数据集中的时间步长的总数。 y ^ i t \hat{y}_i^t y^it y i t y_i^t yit是在时间步 t t t处具体针对传感器节点 i i i的预测的和真实的水质值。

2.2.4 Evaluation metrics

在应用阶段,不需要Masking operation,因为模型直接预测水质值。经过训练的GGNN模型用于预测整个WDN中所有节点的水质。具体而言,它利用在 T c T_c Tc的时间段内收集的历史水质数据来预测下一个时间步长的水质。使用两个广泛使用的指标来评估GGNN模型的性能:MAE和平均绝对百分比误差(MAPE)。

在这里插入图片描述

其中,N是WDN中的节点数量, T t e s t T_{test} Ttest是测试数据集中的时间步的总数, y ^ i t \hat{y}_i^t y^it y i t y_i^t yit是节点 i i i在时间步 t t t处的预测和真实水质值。

2.3 结果和讨论

2.3.1 Masking operation对模型精度的影响

作者对各种不同掩蔽操作对GGNN模型预测精度的影响做出对比。进行了10次实验运行,包括未掩蔽训练和掩蔽比范围为0.1 - 0.9的训练。在不同的训练时期,将整个网络中所有954个节点(包括2个水源和952个需求节点)的MAE用作评估度量。下图显示了在不同掩蔽条件和训练时期下模型的MAE结果。结果表明,所有掩蔽比的性能始终优于未掩蔽模型,表明掩蔽操作在提高预测精度方面的有效性。
在这里插入图片描述
将水质数据集分为五个子集,每个子集用作测试集一次,而其余子集用于训练。计算各掩码条件下的MAE,得到各掩码比的5组MAE值。如图显示了30个训练epoch后不同掩码条件下的MAE结果的箱形图,提供了对每个掩码比下模型准确度的分布和变异性的了解。研究结果表明,过小或过大的掩蔽比导致次优的模型性能。当掩蔽比设置为0.5时,该模型达到了最高的准确度,这表明适度的掩蔽比在捕获相关信息和减轻过拟合之间取得了平衡。实验结果突出了采用适当的掩蔽比在增强水质预测使用GGNN模型的有效性。这些发现强调了该模型在WDNs建模中作为一种有价值的水质预测工具的潜力。

在这里插入图片描述

2.3.2 节点级预测精度

尽管传感器数据的可用性有限,但该模型仍能够对相当多的节点实现高预测精度;如图为测试实验中各个节点的氯预测误差(std代表MAE的标准差)。模型在大多数节点上表现出良好的预测能力,约三分之二的节点MAPE低于10%。尽管传感器数据有限,模型仍能准确预测大部分节点的水质。此外,模型的预测准确性与节点到传感器的距离无关,表明模型能够有效利用网络拓扑信息进行预测。

在这里插入图片描述

如图为:距离最近传感器不同距离的节点的MAE的分布。红色叉号详细说明了落在给定邻近级别内的节点数量。该模型的预测精度不会根据节点和传感器之间的距离而显著变化。这表明该模型能够从相邻节点捕获相关信息,即使它们相对较远。

在这里插入图片描述

2.3.3 不同传感器放置策略对预测精度的影响

研究比较了基于介数中心性(Betweenness Centrality,基于拓扑信息)和方差分析(ANOVA,整合水质数据)的传感器布局策略。结果表明,基于水质信息的ANOVA方法在预测准确性上优于仅基于拓扑信息的介数中心性方法。此外,传感器数量的增加并不总是能提高预测准确性,而是需要合理布局。

在这里插入图片描述

表1中的结果表明了ANOVA策略在预测准确性方面的优越性,强调了在传感器放置中纳入水质信息的重要性。传感器数量和精度之间的关系遵循非线性趋势。随着传感器从20个增加到30个,方差分析策略最初会提高准确性。进一步的增量会产生递减的回报,甚至在精度上略有下降,这表明最佳的传感器数量对应最大化的预测精度。方差分析策略始终优于介数中心性策略,突出了在传感器放置决策中整合水质数据的价值。考虑水质信息的传感器部署提高了WDNs的预测精度。这些发现有助于有效的传感器放置策略,提升网络的监测和管理。

同时发现随着传感器数量的增加(>30),该指数呈下降趋势。此外,与使用30个传感器相比,使用60个传感器导致较低的预测精度。这表明,由聚类驱动的传感器放置策略的有效性并不一定与传感器的数量呈线性关系。一旦通过特定数量的传感器实现了最佳放置策略,进一步的增量可能不会显着提高模型的性能。即传感器的位置对预测精度的影响比部署的传感器的数量更大。

3 相关代码

手写逐行实现GRU网络

import torch
import torch.nn as nn#逐行实现GRU网络
def gru_forward(input,initial_states,w_ih,w_hh,b_ih,b_hh):prev_h= initial_statesbs,T,i_size=input.shapeh_size=w_ih.shape[0]//3#对权重扩维,复制成batch_size倍batch_w_ih=w_ih.unsqueeze(0).tile(bs,1,1)batch_w_hh=w_hh.unsqueeze(0).tile(bs,1,1)output=torch.zeros(bs,T,h_size)#GRU网络的输出状态序列for t in range(T):x=input[:,t,:]#t时刻GRU ce1l的输入特征向量,[bs,i_size]w_times_x=torch.bmm(batch_w_ih,x.unsqueeze(-1))#[bs,3*h_size,1]w_times_x=w_times_x.squeeze(-1)#[bs,3*h size]w_times_h_prev=torch.bmm(batch_w_hh,prev_h.unsqueeze(-1))#[bs,3*h_size,1]w_times_h_prev=w_times_h_prev.squeeze(-1)   #[bs,3*h_size]r_t=torch.sigmoid(w_times_x[:,:h_size]+w_times_h_prev[:,:h_size]+b_ih[:h_size]+b_hh[:h_size]) #重置门z_t=torch.sigmoid(w_times_x[:,h_size:2*h_size]+w_times_h_prev[:,h_size:2*h_size]+b_ih[h_size:2*h_size]+b_hh[h_size:2*h_size])#更新门n_t=torch.tanh(w_times_x[:,2*h_size:3*h_size]+b_ih[2*h_size:3*h_size]+r_t*(w_times_h_prev[:,2*h_size:3*h_size]+b_hh[2*h_size:3*h_size]))#候选状态prev_h=(1-z_t)*n_t+z_t*prev_h #增量更新得到当前时刻最新隐含状态output[:,t,:]=prev_hreturn output,prev_h#测试函数的正确性
bs,T,i_size,h_size=2,3,4,5
input=torch.randn(bs,T,i_size)#输入序列
h0=torch.randn(bs,h_size)#初始值,不需要训练#调用PyTorch官方GRU API
gru_layer =nn.GRU(i_size,h_size,batch_first=True)
output,h_final=gru_layer(input,h0.unsqueeze(0))
#print(output)
for k,v in gru_layer.named_parameters():print(k,v.shape)
#调用自定义的gru forward函数
output_custom, h_final_custom=gru_forward(input,h0,gru_layer.weight_ih_l0,gru_layer.weight_hh_l0,gru_layer.bias_ih_l0,gru_layer.bias_hh_l0)
print(torch.allclose(output,output_custom))
print(torch.allclose(h_final,h_final_custom))

掩码操作(Masking Operation)代码:
在训练过程中随机掩码(隐藏)部分输入数据,只在训练模式下应用掩码操作,部分输入数据会被随机掩码为0在评估模式下,输入数据保持不变(保留原始输入)

import torch
import torch.nn as nnclass MaskingOperation(nn.Module):"""掩码操作模块,用于在训练过程中随机掩码部分输入数据。"""def __init__(self, mask_ratio=0.5):"""初始化掩码操作模块。:param mask_ratio: 掩码比例,表示需要掩码的数据比例(0到1之间)。"""super(MaskingOperation, self).__init__()self.mask_ratio = mask_ratiodef forward(self, x):"""前向传播函数,随机掩码输入数据的一部分。:param x: 输入张量,形状为 (batch_size, num_nodes, features)。:return: 掩码后的输入张量。"""if self.training:  # 只在训练模式下应用掩码操作batch_size, num_nodes, _ = x.size()# 随机生成掩码矩阵,形状与输入数据一致mask = torch.rand(batch_size, num_nodes, 1, device=x.device) < self.mask_ratio# 将掩码位置的值替换为0x_masked = torch.where(mask, torch.zeros_like(x), x)return x_maskedelse:# 在评估模式下直接返回原始输入return x# 示例:使用掩码操作模块
if __name__ == "__main__":# 设置随机种子以保证结果可复现torch.manual_seed(42)# 创建掩码操作模块,掩码比例为0.5masking_op = MaskingOperation(mask_ratio=0.5)# 创建一个示例输入张量,形状为 (batch_size=2, num_nodes=4, features=3)example_input = torch.tensor([[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0], [10.0, 11.0, 12.0]],[[13.0, 14.0, 15.0], [16.0, 17.0, 18.0], [19.0, 20.0, 21.0], [22.0, 23.0, 24.0]]], dtype=torch.float32)print("原始输入数据:")print(example_input)# 将掩码操作模块设置为训练模式masking_op.train()masked_input = masking_op(example_input)print("\n训练模式下掩码后的输入数据:")print(masked_input)# 将掩码操作模块设置为评估模式masking_op.eval()masked_input_eval = masking_op(example_input)print("\n评估模式下掩码后的输入数据:")print(masked_input_eval)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

总结

文章为WDN水质预测提供新的机器学习方法,解决传感器数据有限和网络复杂的挑战。阅读本篇论文,同时,我对图神经网络在水分配网络中的应用有了深入的了解,并掌握了掩码操作和GRU的基本原理和应用方法。

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

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

相关文章

Visual Studio Code修改terminal字体

个人博客地址&#xff1a;Visual Studio Code修改terminal字体 | 一张假钞的真实世界 默认打开中断后字体显示如下&#xff1a; 打开设置&#xff0c;搜索配置项terminal.integrated.fontFamily&#xff0c;修改配置为monospace。修改后效果如下&#xff1a;

新鲜速递:DeepSeek-R1开源大模型本地部署实战—Ollama + MaxKB 搭建RAG检索增强生成应用

在AI技术快速发展的今天&#xff0c;开源大模型的本地化部署正在成为开发者们的热门实践方向。最火的莫过于吊打OpenAI过亿成本的纯国产DeepSeek开源大模型&#xff0c;就在刚刚&#xff0c;凭一己之力让英伟达大跌18%&#xff0c;纳斯达克大跌3.7%&#xff0c;足足是给中国AI产…

SpringCloud基础二(完结)

HTTP客户端Feign 在SpringCloud基础一中&#xff0c;我们利用RestTemplate结合服务注册与发现来发起远程调用的代码如下&#xff1a; String url "http://userservice/user/" order.getUserId(); User user restTemplate.getForObject(url, User.class);以上代码就…

[Java]泛型(一)泛型类

1. 什么是泛型类&#xff1f; 泛型类是指类中使用了占位符类型&#xff08;类型参数&#xff09;的类。通过使用泛型类&#xff0c;你可以编写可以处理多种数据类型的代码&#xff0c;而无需为每种类型编写单独的类。泛型类使得代码更具通用性和可重用性&#xff0c;同时可以保…

react native在windows环境搭建并使用脚手架新建工程

截止到2024-1-11&#xff0c;使用的主要软件的版本如下&#xff1a; 软件实体版本react-native0.77.0react18.3.1react-native-community/cli15.0.1Android Studio2022.3.1 Patch3Android SDKAndroid SDK Platform 34 35Android SDKAndroid SDK Tools 34 35Android SDKIntel x…

GESP2023年12月认证C++六级( 第三部分编程题(1)闯关游戏)

参考程序代码&#xff1a; #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <string> #include <map> #include <iostream> #include <cmath> using namespace std;const int N 10…

UE学习日志#15 C++笔记#1 基础复习

1.C20的import 看看梦开始的地方&#xff1a; import <iostream>;int main() {std::cout << "Hello World!\n"; } 经过不仔细观察发现梦开始的好像不太一样&#xff0c;这个import是C20的模块特性 如果是在VS里编写的话&#xff0c;要用这个功能需要新…

深入解析 C++17 中的 std::not_fn

文章目录 1. std::not_fn 的定义与目的2. 基本用法2.1 基本示例2.2 使用 Lambda 表达式2.3 与其他函数适配器的比较3. 在标准库中的应用3.1 结合标准库算法使用3.1.1 std::find_if 中的应用3.1.2 std::remove_if 中的应用3.1.3 其他标准库算法中的应用4. 高级技巧与最佳实践4.1…

AI大模型开发原理篇-2:语言模型雏形之词袋模型

基本概念 词袋模型&#xff08;Bag of Words&#xff0c;简称 BOW&#xff09;是自然语言处理和信息检索等领域中一种简单而常用的文本表示方法&#xff0c;它将文本看作是一组单词的集合&#xff0c;并忽略文本中的语法、词序等信息&#xff0c;仅关注每个词的出现频率。 文本…

创建前端项目的方法

目录 一、创建前端项目的方法 1.前提&#xff1a;安装Vue CLI 2.方式一&#xff1a;vue create项目名称 3.方式二&#xff1a;vue ui 二、Vue项目结构 三、修改Vue项目端口号的方法 一、创建前端项目的方法 1.前提&#xff1a;安装Vue CLI npm i vue/cli -g 2.方式一&…

INCOSE需求编写指南-附录 D: 交叉引用矩阵

附录 Appendix D: 交叉引用矩阵 Cross Reference Matrices Rules to Characteristics Cross Reference Matrix NRM Concepts and Activities to Characteristics Cross Reference Matrix Part 1 NRM Concepts and Activities to Characteristics Cross Reference Matrix Part…

案例研究丨浪潮云洲通过DataEase推进多维度数据可视化建设

浪潮云洲工业互联网有限公司&#xff08;以下简称为“浪潮云洲”&#xff09;成立于2018年&#xff0c;定位于工业数字基础设施建设商、具有国际影响力的工业互联网平台运营商、生产性互联网头部服务商。截至目前&#xff0c;浪潮云洲工业互联网平台连续五年入选跨行业跨领域工…

基于Python的人工智能患者风险评估预测模型构建与应用研究(下)

3.3 模型选择与训练 3.3.1 常见预测模型介绍 在构建患者风险评估模型时,选择合适的预测模型至关重要。不同的模型具有各自的优缺点和适用场景,需要根据医疗数据的特点、风险评估的目标以及计算资源等因素进行综合考虑。以下详细介绍几种常见的预测模型。 逻辑回归(Logisti…

灰色预测模型

特点&#xff1a; 利用少量、不完全的信息 预测的是指数型的数值 预测的是比较近的数据 灰色生成数列原理&#xff1a; 累加生成&#xff1a; 累减生成&#xff1a;通过累减生成还原成原始数列。 加权相邻生成&#xff1a;&#xff08;会更接近每月中旬&#xff0c;更推荐…

golang通过AutoMigrate方法自动创建table详解

一.AutoMigrate介绍 1.介绍 在 Go 语言中&#xff0c;GORM支持Migration特性&#xff0c;支持根据Go Struct结构自动生成对应的表结构,使用 GORM ORM 库的 AutoMigrate 方法可以自动创建数据库表&#xff0c;确保数据库结构与定义的模型结构一致。AutoMigrate 方法非常方便&am…

宝塔mysql数据库容量限制_宝塔数据库mysql-bin.000001占用磁盘空间过大

磁盘空间占用过多&#xff0c;排查后发现网站/www/wwwroot只占用7G&#xff0c;/www/server占用却高达8G&#xff0c;再深入排查发现/www/server/data目录下的mysql-bin.000001和mysql-bin.000002两个日志文件占去了1.5G空间。 百度后学到以下知识&#xff0c;做个记录。 mysql…

Case逢无意难休——深度解析JAVA中case穿透问题

Case逢无意难休——深度解析JAVA中case穿透问题~ 不作溢美之词&#xff0c;不作浮夸文章&#xff0c;此文与功名进取毫不相关也&#xff01;与大家共勉&#xff01;&#xff01; 更多文章&#xff1a;个人主页 系列文章&#xff1a;JAVA专栏 欢迎各位大佬来访哦~互三必回&#…

decison tree 决策树

熵 信息增益 信息增益描述的是在分叉过程中获得的熵减&#xff0c;信息增益即熵减。 熵减可以用来决定什么时候停止分叉&#xff0c;当熵减很小的时候你只是在不必要的增加树的深度&#xff0c;并且冒着过拟合的风险 决策树训练(构建)过程 离散值特征处理&#xff1a;One-Hot…

研发的立足之本到底是啥?

0 你的问题&#xff0c;我知道&#xff01; 本文深入T型图“竖线”的立足之本&#xff1a;专业技术 技术赋能业务能力。研发在学习投入精力最多&#xff0c;也误区最多。 某粉丝感发展遇到瓶颈&#xff0c;项目都会做&#xff0c;但觉无提升&#xff0c;想跳槽。于是&#x…

WPF基础 | 深入 WPF 事件机制:路由事件与自定义事件处理

WPF基础 | 深入 WPF 事件机制&#xff1a;路由事件与自定义事件处理 一、前言二、WPF 事件基础概念2.1 事件的定义与本质2.2 常见的 WPF 事件类型 三、路由事件3.1 路由事件的概念与原理3.2 路由事件的三个阶段3.3 路由事件的标识与注册3.4 常见的路由事件示例 四、自定义事件处…