You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pandas数据框转换为可部署的机器学习求和预测模型?

实现符合要求的启发式基线模型

1. 构建自定义模型类

要让规则逻辑适配机器学习模型接口(支持fit/predict方法、兼容pickle序列化),可以基于scikit-learn的基类实现自定义模型:

import pandas as pd
from sklearn.base import BaseEstimator, RegressorMixin

class HeuristicSumModel(BaseEstimator, RegressorMixin):
    def fit(self, X, y=None):
        # 规则模型无需训练逻辑,直接返回自身
        return self
    
    def predict(self, X):
        # 实现A、B列求和的核心逻辑
        if not isinstance(X, pd.DataFrame):
            X = pd.DataFrame(X, columns=['A', 'B'])
        return X['A'] + X['B']

2. 测试模型功能

用示例数据验证模型的predict方法:

# 示例输入数据
X = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})

# 实例化模型并执行预测
model = HeuristicSumModel()
pred = model.predict(X)
print(pred)
# 输出:
# 0    5
# 1    7
# 2    9
# dtype: int64

3. 验证pickle序列化

测试模型的保存与加载能力,确保部署场景下的可用性:

import pickle

# 序列化模型到文件
with open('sum_model.pkl', 'wb') as f:
    pickle.dump(model, f)

# 从文件反序列化模型
with open('sum_model.pkl', 'rb') as f:
    loaded_model = pickle.load(f)

# 验证加载后的模型功能正常
print(loaded_model.predict(X).equals(pred))  # 输出:True

4. 部署为API服务

以FastAPI为例快速搭建预测服务:

安装依赖

pip install fastapi uvicorn pandas scikit-learn

编写服务代码(main.py)

from fastapi import FastAPI
import pandas as pd
import pickle

# 加载预序列化的模型
with open('sum_model.pkl', 'rb') as f:
    model = pickle.load(f)

app = FastAPI()

@app.post("/predict")
def predict(data: dict):
    # 将请求数据转换为DataFrame格式
    X = pd.DataFrame(data['data'])
    # 执行预测并转换为列表格式返回
    pred = model.predict(X).tolist()
    return {"predictions": pred}

启动服务

uvicorn main:app --reload

测试API

用curl发送POST请求验证:

curl -X POST "http://localhost:8000/predict" -H "Content-Type: application/json" -d '{"data": [{"A":1, "B":4}, {"A":2, "B":5}]}'

返回结果:

{"predictions": [5,7]}

内容的提问来源于stack exchange,提问作者Andrzej Wodecki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:25:14