首页 > 解决方案 > 将 pydantic 模型从 fastapi 转换为 pandas 数据框

问题描述

我正在尝试将 pydantic 模型转换为数据框,但我遇到了各种错误。

我有:

from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
import pickle
import sklearn
import pandas as pd
import numpy as np

class Userdata(BaseModel):
  current_res_month_dec: Optional[int] = 0
  current_res_month_nov:  Optional[int] = 0


async def return_recurrent_user_predictions_gb(user_data: Userdata):

      empty_dataframe =  pd.DataFrame([Userdata(**{
      'current_res_month_dec': user_data.current_res_month_dec,
      'current_res_month_nov': user_data.current_res_month_nov})], ignore_index=True)

返回此数据框(尝试在本地环境的文档中执行它时):

Response body
Download
{
  "0": {
    "0": [
      "current_res_month_dec",
      0
    ]
  },
  "1": {
    "0": [
      "current_res_month_nov",
      0
    ]
  }

但是如果我尝试使用这个数据框进行预测:

      model_has_afternoon = pickle.load(open('./models/model_gbclf_prob_current_product_has_afternoon.pickle', 'rb'))
      result_afternoon = model_has_afternoon.predict_proba(empty_dataframe)[:, 1]

我收到此错误:

ValueError: setting an array element with a sequence.

我之前尝试过构建自己的数据框,并且预测应该与数据框一起使用

标签: pandasscikit-learnfastapipydantic

解决方案


推荐阅读