Zalaid's picture
Step 7: FastAPI with /predict /health endpoints, V1-V28 inference explanation in README
70c4f4f
from pydantic import BaseModel, Field
class TransactionInput(BaseModel):
Time: float = Field(..., description="Seconds elapsed since the first transaction in the dataset")
V1: float; V2: float; V3: float; V4: float; V5: float
V6: float; V7: float; V8: float; V9: float; V10: float
V11: float; V12: float; V13: float; V14: float; V15: float
V16: float; V17: float; V18: float; V19: float; V20: float
V21: float; V22: float; V23: float; V24: float; V25: float
V26: float; V27: float; V28: float
Amount: float = Field(..., description="Transaction amount in dollars", ge=0)
model_config = {
"json_schema_extra": {
"example": {
"Time": 0.0,
"V1": -1.3598, "V2": -0.0728, "V3": 2.5363, "V4": 1.3782,
"V5": -0.3383, "V6": 0.4624, "V7": 0.2396, "V8": 0.0987,
"V9": 0.3638, "V10": 0.0908, "V11": -0.5516, "V12": -0.6178,
"V13": -0.9914, "V14": -0.3112, "V15": 1.4681, "V16": -0.4704,
"V17": 0.2080, "V18": 0.0258, "V19": 0.4040, "V20": 0.2514,
"V21": -0.0183, "V22": 0.2778, "V23": -0.1105, "V24": 0.0669,
"V25": 0.1285, "V26": -0.1892, "V27": 0.1336, "V28": -0.0211,
"Amount": 149.62
}
}
}
class PredictionOutput(BaseModel):
is_fraud: bool
fraud_probability: float = Field(..., description="Probability of fraud between 0 and 1")
inference_ms: float = Field(..., description="Time taken to run the prediction in milliseconds")