259 lines
7.0 KiB
Markdown
259 lines
7.0 KiB
Markdown
![]() |
# 药店单品销售预测系统 - 用户操作手册
|
|||
|
|
|||
|
## 1. 系统概述
|
|||
|
|
|||
|
药店单品销售预测系统通过先进的深度学习技术,为用户提供药店产品销售预测服务。本手册将指导您如何使用系统的各项功能。
|
|||
|
|
|||
|
## 2. 快速入门
|
|||
|
|
|||
|
### 2.1 启动系统
|
|||
|
|
|||
|
在项目根目录下,运行以下命令启动系统:
|
|||
|
|
|||
|
```bash
|
|||
|
python run_pharmacy_prediction.py
|
|||
|
```
|
|||
|
|
|||
|
### 2.2 主菜单导航
|
|||
|
|
|||
|
启动后,您将看到主菜单界面:
|
|||
|
|
|||
|
```
|
|||
|
==========================================
|
|||
|
🏪 药店单品销售预测系统 🏪
|
|||
|
==========================================
|
|||
|
1. 训练所有药品的销售预测模型
|
|||
|
2. 训练单个药品的销售预测模型(Transformer)
|
|||
|
3. 训练单个药品的销售预测模型(mLSTM)
|
|||
|
4. 训练单个药品的销售预测模型(KAN)
|
|||
|
5. 查看已有预测结果
|
|||
|
6. 使用已训练的模型进行预测
|
|||
|
7. 比较不同模型的预测结果
|
|||
|
8. 模型管理
|
|||
|
0. 退出
|
|||
|
==========================================
|
|||
|
```
|
|||
|
|
|||
|
输入对应的数字选择功能。
|
|||
|
|
|||
|
## 3. 功能详解
|
|||
|
|
|||
|
### 3.1 训练模型
|
|||
|
|
|||
|
系统支持三种主要的模型训练方式:
|
|||
|
|
|||
|
#### 3.1.1 训练所有药品模型
|
|||
|
|
|||
|
选择主菜单中的选项`1`,系统将自动训练所有药品的销售预测模型。
|
|||
|
|
|||
|
#### 3.1.2 训练单个药品模型
|
|||
|
|
|||
|
选择主菜单中的选项`2`、`3`或`4`,分别使用Transformer、mLSTM或KAN模型训练特定药品的销售预测模型。
|
|||
|
|
|||
|
系统会提示您输入产品ID(例如P001)。输入有效的产品ID后,系统会开始训练。
|
|||
|
|
|||
|
训练过程中,系统会显示进度信息,包括当前轮次、训练损失和测试损失。训练完成后,系统会显示模型评估指标,如MSE、RMSE、MAE、R²等。
|
|||
|
|
|||
|
### 3.2 查看预测结果
|
|||
|
|
|||
|
选择主菜单中的选项`5`,系统会显示已有的预测结果列表。
|
|||
|
|
|||
|
您可以选择具体的结果查看详细信息,系统会显示预测曲线图和评估指标。
|
|||
|
|
|||
|
### 3.3 使用模型预测
|
|||
|
|
|||
|
选择主菜单中的选项`6`,可以使用已训练的模型进行预测。
|
|||
|
|
|||
|
系统会提示您选择产品ID和模型类型,然后执行预测并显示结果。
|
|||
|
|
|||
|
### 3.4 比较模型预测结果
|
|||
|
|
|||
|
选择主菜单中的选项`7`,可以比较不同模型对同一产品的预测结果。
|
|||
|
|
|||
|
系统会提示您选择产品ID,然后加载可用的模型进行比较。比较结果会以图表形式显示,并提供各个模型的评估指标对比。
|
|||
|
|
|||
|
### 3.5 模型管理
|
|||
|
|
|||
|
选择主菜单中的选项`8`,进入模型管理子菜单:
|
|||
|
|
|||
|
```
|
|||
|
==========================================
|
|||
|
📊 药店销售预测系统 - 模型管理工具 📊
|
|||
|
==========================================
|
|||
|
1. 查看所有模型
|
|||
|
2. 查看特定产品的模型
|
|||
|
3. 查看特定模型的详细信息
|
|||
|
4. 使用模型进行预测
|
|||
|
5. 比较不同模型的预测结果
|
|||
|
6. 删除模型
|
|||
|
7. 导出模型
|
|||
|
8. 导入模型
|
|||
|
0. 退出
|
|||
|
==========================================
|
|||
|
```
|
|||
|
|
|||
|
#### 3.5.1 查看模型
|
|||
|
|
|||
|
选择选项`1`或`2`,可以查看系统中的所有模型或特定产品的模型。
|
|||
|
|
|||
|
#### 3.5.2 查看模型详情
|
|||
|
|
|||
|
选择选项`3`,可以查看特定模型的详细信息,包括训练参数、评估指标等。
|
|||
|
|
|||
|
#### 3.5.3 使用模型预测
|
|||
|
|
|||
|
选择选项`4`,可以使用选定的模型进行预测。
|
|||
|
|
|||
|
#### 3.5.4 比较模型
|
|||
|
|
|||
|
选择选项`5`,可以比较不同模型的预测结果。
|
|||
|
|
|||
|
#### 3.5.5 删除模型
|
|||
|
|
|||
|
选择选项`6`,可以删除不需要的模型。
|
|||
|
|
|||
|
#### 3.5.6 导出/导入模型
|
|||
|
|
|||
|
选择选项`7`或`8`,可以导出模型以共享或导入外部模型。
|
|||
|
|
|||
|
## 4. 数据管理
|
|||
|
|
|||
|
### 4.1 使用自定义数据
|
|||
|
|
|||
|
系统默认使用`pharmacy_sales.xlsx`文件中的数据。如果您想使用自己的数据,只需将数据保存为相同格式的Excel文件,并命名为`pharmacy_sales.xlsx`放在项目根目录下。
|
|||
|
|
|||
|
数据文件应包含以下列:
|
|||
|
- date: 日期(YYYY-MM-DD格式)
|
|||
|
- product_id: 产品ID
|
|||
|
- product_name: 产品名称
|
|||
|
- sales: 销售量
|
|||
|
- price: 价格
|
|||
|
- weekday: 星期几(0-6)
|
|||
|
- month: 月份(1-12)
|
|||
|
- is_holiday: 是否节假日(0或1)
|
|||
|
- is_weekend: 是否周末(0或1)
|
|||
|
- is_promotion: 是否促销(0或1)
|
|||
|
- temperature: 气温
|
|||
|
|
|||
|
### 4.2 生成模拟数据
|
|||
|
|
|||
|
如果没有现成的数据,系统可以自动生成模拟数据进行测试:
|
|||
|
|
|||
|
```bash
|
|||
|
python generate_pharmacy_data.py
|
|||
|
```
|
|||
|
|
|||
|
## 5. API服务使用
|
|||
|
|
|||
|
### 5.1 启动API服务
|
|||
|
|
|||
|
运行以下命令启动API服务:
|
|||
|
|
|||
|
```bash
|
|||
|
python api.py
|
|||
|
```
|
|||
|
|
|||
|
默认情况下,API服务会在 http://localhost:5000 上运行。
|
|||
|
|
|||
|
### 5.2 访问API文档
|
|||
|
|
|||
|
启动服务后,访问 http://localhost:5000 将自动重定向到Swagger UI文档界面,可以查看所有API接口说明并进行测试。
|
|||
|
|
|||
|
### 5.3 使用API示例
|
|||
|
|
|||
|
以下是一些基本的API使用示例:
|
|||
|
|
|||
|
#### 获取产品列表
|
|||
|
```bash
|
|||
|
curl -X GET "http://localhost:5000/api/products"
|
|||
|
```
|
|||
|
|
|||
|
#### 获取特定产品销售数据
|
|||
|
```bash
|
|||
|
curl -X GET "http://localhost:5000/api/products/P001/sales"
|
|||
|
```
|
|||
|
|
|||
|
#### 启动模型训练
|
|||
|
```bash
|
|||
|
curl -X POST "http://localhost:5000/api/training" \
|
|||
|
-H "Content-Type: application/json" \
|
|||
|
-d '{"product_id": "P001", "model_type": "mlstm"}'
|
|||
|
```
|
|||
|
|
|||
|
#### 获取预测结果
|
|||
|
```bash
|
|||
|
curl -X POST "http://localhost:5000/api/prediction" \
|
|||
|
-H "Content-Type: application/json" \
|
|||
|
-d '{"product_id": "P001", "model_type": "mlstm", "days": 7}'
|
|||
|
```
|
|||
|
|
|||
|
## 6. 常见问题解答
|
|||
|
|
|||
|
### 6.1 预测结果不准确
|
|||
|
|
|||
|
- 确保训练数据质量高且数量充足
|
|||
|
- 尝试增加训练轮次(epochs)
|
|||
|
- 尝试不同类型的模型(Transformer、mLSTM或KAN)
|
|||
|
- 检查数据是否存在季节性或趋势性,并选择适合的模型
|
|||
|
|
|||
|
### 6.2 训练速度慢
|
|||
|
|
|||
|
- 检查是否正在使用GPU加速
|
|||
|
- 减小批大小(batch_size)
|
|||
|
- 减少训练轮次(epochs)
|
|||
|
- 考虑使用更简单的模型
|
|||
|
|
|||
|
### 6.3 模型保存失败
|
|||
|
|
|||
|
- 检查磁盘空间是否充足
|
|||
|
- 确保有写入权限
|
|||
|
- 尝试手动创建predictions目录
|
|||
|
|
|||
|
### 6.4 找不到已训练的模型
|
|||
|
|
|||
|
- 确认模型已成功训练并保存
|
|||
|
- 检查predictions目录中是否存在对应的模型文件
|
|||
|
- 确认产品ID和模型类型输入正确
|
|||
|
|
|||
|
## 7. 高级使用技巧
|
|||
|
|
|||
|
### 7.1 命令行参数
|
|||
|
|
|||
|
许多功能也可以通过命令行参数直接调用,例如:
|
|||
|
|
|||
|
```bash
|
|||
|
# 使用mLSTM模型训练P001产品的销售预测模型
|
|||
|
python run_pharmacy_prediction.py --train P001 --model mlstm
|
|||
|
|
|||
|
# 比较P001产品的不同模型预测结果
|
|||
|
python run_pharmacy_prediction.py --compare P001
|
|||
|
```
|
|||
|
|
|||
|
### 7.2 模型管理命令行工具
|
|||
|
|
|||
|
模型管理功能也可以通过独立的命令行工具使用:
|
|||
|
|
|||
|
```bash
|
|||
|
# 列出所有模型
|
|||
|
python model_management.py --action list
|
|||
|
|
|||
|
# 查看特定产品的模型详情
|
|||
|
python model_management.py --action details --product_id P001 --model_type mlstm
|
|||
|
|
|||
|
# 使用特定模型进行预测
|
|||
|
python model_management.py --action predict --product_id P001 --model_type mlstm
|
|||
|
```
|
|||
|
|
|||
|
### 7.3 批量处理
|
|||
|
|
|||
|
对于需要处理多个产品的场景,可以编写简单的批处理脚本:
|
|||
|
|
|||
|
```python
|
|||
|
import os
|
|||
|
import time
|
|||
|
|
|||
|
products = ["P001", "P002", "P003", "P004", "P005"]
|
|||
|
for product in products:
|
|||
|
os.system(f"python run_pharmacy_prediction.py --train {product} --model mlstm")
|
|||
|
time.sleep(5) # 等待一段时间再处理下一个产品
|
|||
|
```
|