# 模型分析工具使用指南

## 概述

本工具包为土壤酸化模型提供了全面的分析和诊断功能，特别针对模型24的性能问题分析。工具包包含两个主要组件：

- **ModelAnalyzer**: 综合性能分析工具
- **ModelDiagnostic**: 问题诊断工具

## 文件结构

```
model_optimize/
├── model_analyzer.py       # 综合性能分析工具
├── model_diagnostic.py     # 问题诊断工具
├── run_analysis.py         # 快速运行脚本
├── README.md              # 使用说明
├── analysis_results/      # 分析结果输出目录
└── diagnostic_results/    # 诊断结果输出目录
```

## 功能特性

### ModelAnalyzer (综合性能分析)

- **模型性能评估**: R²、RMSE、MAE、MAPE等多种指标
- **特征重要性分析**: 模型内置重要性 + 排列重要性
- **预测行为分析**: 用户参数预测 + 预测值分布统计
- **参数敏感性分析**: 各参数对预测结果的影响程度
- **可视化图表**: 散点图、残差图、特征重要性图、敏感性曲线
- **综合报告**: 详细的分析报告和优化建议

### ModelDiagnostic (问题诊断)

- **异常预测检测**: 训练数据异常值检测 + 测试预测异常检测
- **数据分布分析**: 特征分布、目标变量分布、相关性分析
- **模型稳定性测试**: 参数扰动测试、敏感性评估
- **边界条件测试**: 极值情况下的模型表现
- **数据质量检查**: 缺失值、异常值、高相关性检测
- **诊断可视化**: 分布图、箱线图、Q-Q图、相关性热图
- **诊断报告**: 问题识别和改进建议

## 使用方法

### 方法1: 使用快速运行脚本 (推荐)

```bash
cd model_optimize
python run_analysis.py
```

脚本会提供交互式菜单，您可以选择：
1. 综合性能分析
2. 问题诊断分析  
3. 同时执行两种分析
4. 退出

### 方法2: 直接调用分析工具

#### 综合性能分析

```python
from model_analyzer import ModelAnalyzer

# 创建分析器实例
analyzer = ModelAnalyzer()

# 用户参数（来自API调用）
user_params = {
    "OM": 100,
    "CL": 3.1,
    "CEC": 3.44584,
    "H_plus": 0.5,
    "N": 12.4,
    "Al3_plus": 0.8,
    "target_pH": 7.0
}

# 运行完整分析
results = analyzer.run_full_analysis(model_id=24, sample_params=user_params)
```

#### 问题诊断分析

```python
from model_diagnostic import ModelDiagnostic

# 创建诊断器实例
diagnostic = ModelDiagnostic()

# 运行完整诊断
results = diagnostic.run_full_diagnostic(model_id=24, test_params=user_params)
```

## 输出结果

### 分析结果文件

所有分析结果会保存在相应目录中：

- `analysis_results/`: 性能分析结果
  - 散点图: `model_24_scatter_YYYYMMDD_HHMMSS.png`
  - 残差图: `model_24_residuals_YYYYMMDD_HHMMSS.png`
  - 特征重要性图: `model_24_feature_importance_YYYYMMDD_HHMMSS.png`
  - 敏感性分析图: `model_24_sensitivity_YYYYMMDD_HHMMSS.png`
  - 敏感性曲线: `model_24_sensitivity_curves_YYYYMMDD_HHMMSS.png`
  - 分析报告: `model_24_analysis_report_YYYYMMDD_HHMMSS.txt`

- `diagnostic_results/`: 诊断结果
  - 数据分布图: `model_24_data_distribution_YYYYMMDD_HHMMSS.png`
  - 异常值分析图: `model_24_outlier_analysis_YYYYMMDD_HHMMSS.png`
  - 敏感性图: `model_24_sensitivity_YYYYMMDD_HHMMSS.png`
  - 相关性矩阵: `model_24_correlation_YYYYMMDD_HHMMSS.png`
  - 诊断报告: `model_24_diagnostic_report_YYYYMMDD_HHMMSS.txt`

### 报告内容示例

#### 分析报告包含：
- 模型基本信息
- 性能指标详情 (R²、RMSE、MAE等)
- 特征重要性排序
- 参数敏感性排序
- 用户参数预测结果
- 优化建议

#### 诊断报告包含：
- 异常检测结果
- 数据质量分析
- 稳定性测试结果
- 边界条件测试
- 问题诊断和改进建议

## 针对模型24的分析

基于您提供的API调用参数：
```json
{
    "model_id": "24",
    "parameters": {
        "OM": 100,
        "CL": 3.1,
        "CEC": 3.44584,
        "H_plus": 0.5,
        "N": 12.4,
        "Al3_plus": 0.8
    }
}
```

工具会自动：
1. 加载模型24的信息和文件
2. 确定模型数据类型 (reduce/reflux)
3. 加载相应的训练/测试数据
4. 对用户参数进行预测和分析
5. 生成详细的分析和诊断报告

## 依赖环境

确保安装了以下Python包：
```bash
pip install pandas numpy matplotlib seaborn scikit-learn scipy sqlite3
```

## 注意事项

1. **数据库路径**: 工具默认使用 `SoilAcidification.db`，确保文件存在
2. **模型文件**: 确保模型pickle文件路径正确
3. **测试数据**: 需要存在对应的测试数据文件 (`uploads/data/X_test_*.csv`, `uploads/data/Y_test_*.csv`)
4. **权限**: 确保有创建输出目录和写入文件的权限

## 故障排除

### 常见问题

1. **模型文件不存在**
   - 检查数据库中模型的 `ModelFilePath` 字段
   - 确保pkl文件确实存在于指定路径

2. **测试数据加载失败**
   - 检查 `uploads/data/` 目录下是否有对应的CSV文件
   - 确保文件格式正确

3. **中文字体显示问题**
   - 图表可能无法正确显示中文标签
   - 这不影响分析功能，只是显示问题

### 调试模式

如需查看详细的调试信息，在代码中设置：
```python
import logging
logging.basicConfig(level=logging.DEBUG)
```

## 扩展使用

### 分析其他模型

修改 `run_analysis.py` 中的 `model_id` 参数：
```python
model_id = 25  # 改为其他模型ID
```

### 批量分析

可以编写循环来分析多个模型：
```python
for model_id in [24, 25, 26]:
    analyzer.run_full_analysis(model_id, user_params)
```

### 自定义参数

修改 `user_params` 字典来测试不同的参数组合：
```python
user_params = {
    "OM": 50,      # 修改有机质含量
    "CL": 2.5,     # 修改粘土含量
    # ... 其他参数
}
```

## 技术支持

如有问题，请检查：
1. 控制台输出的错误信息
2. 生成的日志文件
3. 确保所有依赖文件都存在

---

**使用愉快！此工具将帮助您深入了解模型24的性能特征和潜在问题。** 