🪪 项目介绍

WHAT

本项目是一个可以在线修补供水管网水力数据缺失值的工具。更为准确地说,我们将其命名为 Graph-based Data Imputation (GDI)。该工具的方法论和具体实现过程请参考论文:Leveraging Multi-level Correlations for Imputing Monitoring Data in Water Supply Systems Using Graph Signal Sampling Theory。本篇论文中我们提出了一种基于图信号采样技术的供水管网水力数据修补方法,经过课题组内长期使用该方法在实践中非常高效且方便。本着开放、共享和协作的开源精神,我们将其开发为在线Web工具,供业内所有个人研究者免费使用。

Graphical Abstract
Graphical Abstract

WHY

由于信号传输以及硬件系统的限制,供水管网水力数据中总是不可避免地出现各种各样的缺失。

实例数据
实例数据

如上如图所示,数据中存在不定长度、不定位置的数据缺失,是我们日常工作中会经常遇到的。应该采用什么样的方法来解决这个问题呢?我们初期做了很多探索,总体看来:

  • 传统线性插值、周期替换虽然方便,但是当数据缺失量太大时往往就失效了;
  • “高级”一点的机器学习(深度学习)技术,往往建模、训练过程复杂,有一种杀鸡焉用宰牛刀的感觉;况且,对于很多研究者来说,处理数据就是为了使用机器学习来进行研究工作,如果再来研究如何使用机器学习技术处理缺失数据,这不是成了先有蛋还是先有鸡的问题了吗?

言而总之,在实际工作中,我们并没有找到一个高效、方便可以处理这个经常会遇到且烦人的问题。

没有工具,那么我们就自己造一个。于是乎我们就提出了DGI方法论,但是觉得每次用起来只有掌握代码的人才可以快速修补数据,非常不方便。于是乎,我们决定再设计一个“傻瓜式”的在线WEB工具,让人人都可以享受到此技术带来的便利。

HOW

GDI WEB工具共包括三部分:

  • 可交互图形展示区:用于展示和操作数据可视化;
  • 操作区:显示命令操作按钮;
  • 消息展示区:显示前后端用以提示用户的消息。

GDI WEB工具展示
GDI WEB工具展示

程序正在测试阶段,最终页面设计可能会与教程有少许差别。

打开页面

首先使用浏览器打开GDI WEB工具官方网页:https://group.zhouxiao.tech/imputation.html,推荐使用Microsoft Edge或者Google Chrome。

如果您的电脑可以顺利访问互联网,那么您第一次进入本网页应该显示左图这样:

可以看到,在可交互图形展示区会显示一句话:Welcome to zhouxiao.tech! The GDI Web server is running., 这说明DGI Server 端正常运行,您可以使用该服务。如果显示右图:502 Bad Gateway nginx,说明DGI Server端正在维护或者已经停机。遇到这种情况,请您在本页面下方留言。

上传文件

如果DGI Server端正常运行,那么您就可以进行上传文件操作了,从上面的左图可以看出,当第一次打开页面时,操作区域只有第一个按钮 1. 上传文件 是可以点击的,这样的设计是为了防止误操作,在您顺利上传并且服务器接受文件后,后面的按钮将会开启。

请注意上传文件的格式要求,这将关系到本程序是否可以正常运行!!!

上传文件的格式要求为:第一列[: 0]必须为时间序列格式(文本对象即可),其余各列[:, 1:]为需要进行修补的数据,如下图所示:

文件格式举例
文件格式举例

具体的细节要求如下:

格式大小时间序列格式缺失值类型
csv, xlsx, txt, pkl, pickle50MB 以下pandas.to_datetime["", "NULL", "N/A", "na", "NaN"]
为了减轻服务器存储和计算压力,我们强烈建议您使用pickle文件!!!

如果上传文件成功,消息展示区会显示时间序列的开始时间、结束时间以及监测频率以及各数据列的数据缺失情况。

上传成功后页面展示
上传成功后页面展示

只有当文件上传完毕且通过格式检查后,2. 运行算法 按钮才可以点击。

运行算法

点击 2. 运行算法 按钮后,消息展示区会提示程序正在运行。同时,可交互图形展示区有跑马灯效果(左图)。当算法在 Server端运行完毕后,可交互图形展示区会展示修补后的结果,同时跑马灯效果消失;消息展示区会提示算法运行结束;操作区3. 保存文件 按钮被激活。

如果 GDI Server 处于空闲状态,那么算法参数在通过检查后会立即执行算法。如果 GDI Server 进程已满,则会提示用户进行等待,例如:

3:52:57 PM [WARNING] - GDI Server 进程已满, 正在等待排号: [2], 耗时 [0分32秒] 已结束.

等待排号完毕,程序会自动开始进行计算。

下载文件

点击操作区 3. 保存文件 按钮即可下载压缩包,压缩包内包括两个:

  1. csv:完成数据修补后的数据表;
  2. html修补后数据表绘制的可交互图形。

👨‍💻 开发日志

  • [2024.10.29] 初步想法:提出了本项目的初步想法。
  • [2024.11.03] 前端设计:简单设计了网站的前端页面,https://group.zhouxiao.tech/imputation.html
  • [2024.11.04] Server端开发:采用Flask架构进行后端程序设计。
  • [2024.11.06] AJAX前后端通信:采用AJAX技术进行前后端通信。
  • [2024.11.07] 前端用户交互设计:采用JQuery技术提升用户交互体验。
  • [2024.11.08] 前端用户交互设计:更新消息提示区样式、增加一键复制日志功能;前后端通信优化:前端改用轮询方式检查任务状态,前端先请求启动任务,然后每隔一段时间发送请求到后端查询任务状态,当任务完成时,前端再获取最终结果。
  • [2024.11.10] 多用户访问前后端优化:针对服务器性能较低、用户需要等待等问题进行友好型设计,后端建立排队机制,若同时访问用户过多,则需要进行排队等待,先到先得;前端同步显示用户排队号码以及等待时长。
  • [2024.11.11] 算法参数更新:新增“周期性权重”参数,针对部分周期性较弱、相邻相关性更强的水力数据,可以尝试减小“周期性权重”进而提高算法对于前后相邻时刻数据的学习能力。