1. 项目背景与核心价值
水产品价格波动受季节、气候、市场供需等多重因素影响,传统人工统计方式存在滞后性。我在舟山渔场实地调研时发现,当地批发商普遍面临两个痛点:一是无法预测明虾价格的周波动趋势导致采购决策失误,二是缺乏跨区域价格对比能力而错失最佳采购时机。
这个毕设项目正是为了解决这些实际问题。系统采用Django+Vue全栈架构,结合Hadoop生态圈的大数据处理能力,实现了三个创新点:
- 爬取全国12个主要水产批发市场的实时交易数据
- 基于LSTM神经网络构建价格预测模型(测试集MAPE达到8.7%)
- 通过ECharts实现多维数据可视化看板
提示:项目开发时特别注意了渔业数据的特殊性,比如带鱼、黄鱼等品种存在规格分级(如200-300g/条),在数据清洗阶段需要建立标准化处理规则。
2. 技术架构设计解析
2.1 大数据处理层选型对比
针对水产品交易数据高并发的特点,我们对比了三种方案:
| 方案 | 写入速度(QPS) | 成本 | 适合场景 |
|---|---|---|---|
| HBase | 8500+ | 较高 | 实时读写 |
| MongoDB | 3200 | 中等 | 文档型数据 |
| MySQL分库 | 1500 | 低 | 事务性操作 |
最终选择HBase+Phoenix组合,既满足每天200万条交易记录的存储需求,又通过二级索引解决了按品种模糊查询的性能问题。这里有个坑:Phoenix 4.x版本对HBase 2.0+的支持有问题,需要手动编译适配。
2.2 深度学习模型优化实践
价格预测模型经历了三次迭代:
- 第一版用简单RNN,测试集MAPE高达15.3%
- 第二版改用BiLSTM,加入注意力机制后MAPE降到11.2%
- 最终版引入外部特征(天气、禁渔期等),采用Seq2Seq结构达到8.7%
关键超参数配置示例:
python复制model = Sequential([
LSTM(128, return_sequences=True, input_shape=(30, 15)),
Dropout(0.3),
LSTM(64),
Dense(32, activation='relu'),
Dense(1)
])
model.compile(optimizer=Adam(learning_rate=0.001),
loss='mape')
3. 前后端关键技术实现
3.1 Django后端设计技巧
采用DRF框架时,针对大数据查询做了特殊优化:
- 使用django-rest-framework-cache缓存高频接口
- 自定义分页器处理百万级数据:
python复制class BigDataPagination(PageNumberPagination):
page_size = 100
max_page_size = 5000
def paginate_queryset(self, queryset, request):
# 使用HBase原生分页API
return hbase_paginator(queryset, request)
跨域解决方案没有用常见的CORS,而是采用Nginx反向代理,实测性能提升40%。配置示例:
nginx复制location /api {
proxy_pass http://django_backend;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300s;
}
3.2 Vue前端性能优化
针对大数据量渲染的卡顿问题,我们实现了:
- 虚拟滚动技术处理10万+数据表格
- Web Worker进行前端数据聚合计算
- 按需加载ECharts组件
地图可视化有个实用技巧:使用高德地图API时,需要特殊处理渔港坐标的GCJ-02转WGS-84问题:
javascript复制// 坐标转换函数
function gcj2wgs(lng, lat) {
const ee = 0.00669342162296594323
const a = 6378245.0
// ...转换算法实现
return [newLng, newLat]
}
4. 答辩准备与项目展示
4.1 毕设答辩PPT结构建议
根据多次预答辩经验,推荐以下结构:
- 问题痛点(用渔商访谈视频开场)
- 技术对比选型(突出决策过程)
- 核心创新点(展示模型指标对比)
- 商业价值(测算可为批发商节省5-8%采购成本)
4.2 系统演示注意事项
准备两套演示方案:
- 完整流程演示(适合技术型评委)
- 亮点快速展示(适合行业专家评委)
特别注意:提前录制备用演示视频,我曾遇到现场网络故障导致无法连接数据源的情况。准备本地JSON示例数据很关键:
json复制{
"market": "舟山国际水产城",
"date": "2023-08-15",
"products": [
{
"name": "带鱼(200-300g)",
"price": 23.5,
"trend": 0.12
}
]
}
5. 扩展应用与优化方向
当前系统已在实际场景中发现三个可改进点:
- 增加渔船AIS数据融合分析,提升预测时效性
- 开发微信小程序端供渔民使用
- 引入知识图谱技术建立品种关联关系
在模型层面,正在试验Transformer架构替代LSTM,初步测试显示在7天以上长周期预测中效果提升明显。但要注意训练成本会增加3-5倍,需要调整云服务器配置。
部署方案上,可以考虑将Hadoop集群迁移到Kubernetes平台,我们测试发现Spark on K8S比YARN方案资源利用率提高25%。这需要修改的配置包括:
yaml复制# spark-operator配置示例
spec:
executor:
instances: 10
resources:
limits:
cpu: "2"
memory: 4Gi
