Django案例:端到端的预测工具Web界面开发 - bettermorn/ACMWDevHubPPT GitHub Wiki
主要流程
- 上传数据
- 选择模型
- 计算
- 展示预测结果
功能设计
- 介绍: home.html 静态页面,介绍项目背景,使用方法。
- 上传数据: data.html 上传excel文件,放在服务器某个路径即可, 注意:文件很大
- 选择模型: model.html 显示模型对应的参数,调用模型对应的文件 参考https://github.com/bettermorn/IAI/wiki/HPC%E7%8E%AF%E5%A2%83%E4%BF%A1%E6%81%AF#%E8%BF%90%E8%A1%8C%E6%8A%A5%E5%91%8A
- 计算:运行相应的py文件 tst.py and cnnlstm.py 其中文件的模型为已完成的模型,上传到服务器
- 显示预测结果:准确度数值以及下载Excel表
使用架构
- DJango,参考 https://www.djangoproject.com/
- 快速开始
- https://www.djangoproject.com/start/
- https://docs.djangoproject.com/en/4.2/#first-steps
- Writing your first Django app, part 1:https://docs.djangoproject.com/en/4.2/intro/tutorial01/
- Writing your first Django app, part 2 Database setup :https://docs.djangoproject.com/en/4.2/intro/tutorial02/
前端展示
home.html
静态页面
data.html
提示上传成功
model.html
展示不同的模型信息,暂时静态页面,确认按钮的文字为部署
run.html
动态图标,表示在运行
result.html
展示预测准确率、预测序列表和相应预测文件名称
后端功能及函数
views.py 包含所有页面事件处理的结果以及一些主要方法
功能 | 方法名称 | 输入 | 输出 |
---|---|---|---|
进入主页 | home | request | 展现home.html |
根据request信息展现不同的页面 | run | request | 不同页面链接和相应页面数值信息 |
data.html
功能 | 方法名称 | 输入 | 输出 |
---|---|---|---|
上传excel表(主要是用于预测的数据集) | _upload_data | xlsx文件 | 文件上传到服务器的data目录以及上传成功信息 |
- 上传代码参考:
model.html
功能 | 方法名称 | 输入 | 输出 |
---|---|---|---|
选择模型 | _choose_model | 模型名称,如tst,cnn_lstm | 将调用方法名称_tst_predict_y,_cnn_lstm_predict_y,_tst_predict,_cnn_lstm_predict传到request中 |
上传模型 | _upload_model | 模型名称 | 将模型文件上传到服务器的models目录 |
run.html
基本方法
特别说明,输入文件包含特征量和前面的测量长度值(必须有),原因参考 https://github.com/bettermorn/CalCarSoftM/issues/2 ,取预测值的最后一个值作为显示值,预测值长度为输入记录数-1,因为目前的算法中时滞步数为1.
功能 | 方法名称 | 输入 | 输出 |
---|---|---|---|
预测结果 | _fit_model | 模型名称即文件名称,如tst,cnnlstm | 预测结果的准确率、output产生预测结果文件 |
用tst预测并比较预测结果 | _tst_predict | 包含验证数据的数据文件 | 预测结果的准确率、计算时长、预测的rmse,output产生预测结果文件 |
用cnnlstm预测并比较预测结果 | _cnn_lstm_predict | 包含验证数据的数据文件 | 预测结果的准确率、计算时长、预测的rmse,output产生预测结果文件 |
预测模型的辅助方法
功能 | 方法名称 | 输入 | 输出 |
---|---|---|---|
时序数据转为监督数据集 | _series_to_supervised | 原始数据文件 | 重组后的用于监督学习的数据集 |
生成测试集 | _get_valid_data | 原始数据文件,has_yvalid | 测试集的输入和输出集 |
生成预测报告 | _report | 预测值,实际值 | 预测结果的准确率、output目录生成预测结果文件 |
生成预测报告 | _output | 预测值 | 预测值数列、output目录生成预测结果文件 |
查找预测数据落在±50mm范围的数据 | _find | 数据集,最大值,最小值 | 落在区间为真 |
数据集转换 | flatten | list | flatten后的集合 |
result.html
功能 | 参数/工具名称 | 输入 | 输出 |
---|---|---|---|
下载预测结果文件 | _download_preds | 下载文件名 | 可成功下载 |
- 下载代码参考:
- Python downloads file resources from remote servers to local through paramiko https://developpaper.com/python-downloads-file-resources-from-remote-servers-to-local-through-paramiko/
- 3 Simple Ways to Download Files With Python https://betterprogramming.pub/3-simple-ways-to-download-files-with-python-569cb91acae6
代码
代码结构
依赖环境
- django
- 两个模型依赖的环境 参考 https://github.com/bettermorn/IAI/blob/master/Code/data_analysis/TSRegression/requirements.txt https://github.com/bettermorn/IAI/blob/master/Code/data_analysis/TSRegression/requirementsforcnn.txt
- 代码库已标识
- note: 需验证如何计算两个不同环境的预测结果
启动 django
cd web
python manage.py runserver