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 8000API终点
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许可证。看 许可证.
