糖尿病预测工具集

一个模块化的计算流程工具集,用于通过机器学习工作流预测糖尿病,包括数据探索、模型训练、推理和评估。

  • by c-baynham
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 c-baynham/DDLS-final-project-repo-claralb

使用说明

糖尿病预测模块化计算管道(MCP)工具集

该存储库包含使用PIMA印第安人糖尿病数据库预测糖尿病的模块化计算管道(MCP)工具集。该工具集提供了一种结构化和灵活的方式来与整个机器学习工作流程进行交互,从数据探索和准备到模型训练、推理和评估。

特性

MCP工具集通过REST API公开了以下关键功能:

  • 加载数据: 导入和预处理数据集,为分析或模型推理做准备。
  • 运行模型推断: 对输入数据执行经过训练的机器学习模型以生成预测。
  • 显示结果: 以清晰易懂的格式显示结果,包括表格、图表和摘要。
  • 评估模型: 使用适当的评估指标评估模型的性能,使用户能够了解模型的准确性和可靠性。

这种模块化方法提高了糖尿病预测任务的可重复性、灵活性和易用性。

项目结构

mcp_toolset/
├── app.py                  # Flask application for the REST API
├── server.py               # Core logic for data processing, model training, and evaluation
├── requirements.txt        # Python dependencies
├── data/
│   └── diabetes.csv        # PIMA Indians Diabetes Database
├── trained_models/         # Directory for trained machine learning models
│   ├── constant_model.pkl
│   ├── logistic_regression.pkl
│   ├── neural_network.pth
│   ├── random_forest.pkl
│   └── xgboost.pkl
└── results/                # Directory for generated plots and processed data
    ├── class_distribution.png
    ├── cross_validation_accuracies.png
    ├── feature_distributions.png
    ├── missing_data_heatmap.png
    ├── split_class_distributions.png
    ├── X_test.csv
    ├── X_train.csv
    ├── y_test.csv
    ├── y_train.csv
    ├── roc_curves_all_models.png
    ├── confusion_matrices.png
    └── feature_importance_subplots.png

安装

要在本地设置项目,请执行以下步骤:

  1. 克隆存储库:

    git clone <repository_url>
    cd mcp_toolset
    

    (注:更换 <repository_url> 创建GitHub存储库后,使用其实际URL。)

  2. 创建虚拟环境(推荐):

    python -m venv venv
    source venv/bin/activate  # On Windows, use `venv\Scripts\activate`
    
  3. 安装依赖项:

    pip install -r requirements.txt
    

用法

运行MCP服务器

要启动Flask API服务器,请导航到 mcp_toolset 目录并运行:

python app.py

服务器通常运行在 http://127.0.0.1:5000 (或另一个端口(如果已配置)。

API终点

服务器公开了与MCP工具对应的几个端点。您可以使用以下方式与他们互动 curlPostman或任何HTTP客户端。

1.数据探索

  • 端点: /run_data_exploration
  • 方法: GET
  • 说明: 执行初始数据探索并生成可视化。
  • 例子:
    curl http://127.0.0.1:5000/run_data_exploration
    

2.准备数据

  • 端点: /prepare_data
  • 方法: POST
  • 说明: 加载、清理、缩放数据集,并将其拆分为训练集、验证集和测试集。
  • 参数(JSON正文中可选):
    • test_size:(float,默认值:0.2)要包含在测试拆分中的数据集的比例。
    • random_state:(int,default:42)控制在应用拆分之前应用于数据的洗牌。
  • 例子:
    curl -X POST -H "Content-Type: application/json" -d '{"test_size": 0.25, "random_state": 123}' http://127.0.0.1:5000/prepare_data
    
    或者对于默认参数:
    curl -X POST http://127.0.0.1:5000/prepare_data
    

3.列车模型

  • 端点: /train_model
  • 方法: POST
  • 说明: 训练指定的机器学习模型并保存。
  • 参数(JSON正文中必需):
    • model_name:(string)要训练的模型的名称。
      • 接受值: "constant_model", "logistic_regression", "random_forest", "xgboost", "neural_network"
  • 例子:
    curl -X POST -H "Content-Type: application/json" -d '{"model_name": "random_forest"}' http://127.0.0.1:5000/train_model
    

4.获得交叉验证的准确性

  • 端点: /get_cv_accuracies
  • 方法: GET
  • 说明: 对所有已实施的模型执行5倍交叉验证,并返回其平均准确度和标准偏差。
  • 例子:
    curl http://127.0.0.1:5000/get_cv_accuracies
    

5.生成ROC曲线

  • 端点: /generate_roc_curves
  • 方法: GET
  • 说明: 为所有模型生成具有ROC曲线子图的单个图形。
  • 例子:
    curl http://127.0.0.1:5000/generate_roc_curves
    

6.生成混淆矩阵

  • 端点: /generate_confusion_matrices
  • 方法: GET
  • 说明: 为所有模型生成一个带有混淆矩阵的图形。
  • 例子:
    curl http://127.0.0.1:5000/generate_confusion_matrices
    

7.生成特征重要性

  • 端点: /generate_feature_importance
  • 方法: GET
  • 说明: 生成一个2x2的子图,比较主要模型的特征重要性。
  • 例子:
    curl http://127.0.0.1:5000/generate_feature_importance
    

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。