ShopTRAINING/docs/输出文档/用户操作手册.md

259 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 药店单品销售预测系统 - 用户操作手册
## 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) # 等待一段时间再处理下一个产品
```