特征工程服务

一个基于FastAPI的服务,用于自动化特征工程,使数据准备好用于机器学习模型训练。

  • by abhisiroha
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 abhisiroha/data_mcp

使用说明

data_mcp

模型上下文协议(MCP)-特征工程服务

该项目提供了一个基于FastAPI的服务器,帮助用户摄取表格数据并自动设计功能,使数据为机器学习模型训练做好准备。它利用PySpark进行可扩展的数据处理,并支持CSV和Parquet文件。

特性

  • 数据摄入:加载CSV或Parquet文件并获取模式、空统计数据和示例行。
  • 自动化特征工程:输入缺失值,对分类变量进行编码,提取日期时间特征,并为ML组装特征。
  • 交互式API:如果未提供,则建议提供所需信息(例如分类栏)。
  • 可扩展的:使用PySpark处理大型数据集。

需求

  • Python 3.8+
  • Java(适用于PySpark)
  • 看 requirements.txt 对于Python依赖项

安装

# Clone the repository
# cd into the project directory
python -m venv env
source env/bin/activate  # On Windows: env\Scripts\activate
pip install -r requirements.txt

配置

  • 允许的文件类型:CSV、Parquet
  • 最大文件大小:200MB(请参阅 config.py)
  • 数据目录:Set DATA_DIR 环境变量(如果需要)

运行服务器

uvicorn main:app --reload --host 0.0.0.0 --port 8000

API终点

1.摄入数据

POST /ingest

请求正文:

{
  "file_path": "path/to/data.csv",
  "file_type": "csv",
  "delimiter": ","
}

答复:

{
  "columns": ["col1", "col2", ...],
  "dtypes": {"col1": "int", "col2": "string", ...},
  "null_stats": {"col1": 0, "col2": 5, ...},
  "sample_rows": [ {"col1": 1, "col2": "A"}, ... ]
}

2.特征工程

POST /feature-engineer

请求正文:

{
  "target_column": "label",
  "categorical_columns": ["cat1", "cat2"],
  "datetime_columns": ["date_col"],
  "feature_methods": ["auto"],
  "custom_params": {}
}

答复:

{
  "engineered_columns": ["col1", "cat1_oh", ...],
  "transformations": {"cat1": "onehot", ...},
  "feature_stats": {"col1": {"mean": 5.2, "count": 100}, ...},
  "message": "Auto feature engineering complete"
}

如果缺少所需的信息,API将以交互方式建议或请求它。

示例用法(Python)

import requests

# Ingest data
resp = requests.post("http://localhost:8000/ingest", json={
    "file_path": "data.csv",
    "file_type": "csv",
    "delimiter": ","
})
print(resp.json())

# Feature engineering
resp = requests.post("http://localhost:8000/feature-engineer", json={
    "categorical_columns": ["cat1", "cat2"]
})
print(resp.json())

日志记录

  • 日志与时间戳和日志级别一起打印到控制台(请参阅 logger.py).

许可证

MIT许可证。看 许可证.