27 lines
969 B
Python
27 lines
969 B
Python
from fastapi import APIRouter, HTTPException
|
|
from app.models.prediction import HousePredictionInput, HousePredictionOutput
|
|
from app.services.ml_model import HousePricePredictor
|
|
|
|
router = APIRouter()
|
|
model = HousePricePredictor()
|
|
|
|
@router.post("/predict",
|
|
response_model=HousePredictionOutput,
|
|
summary="Predict house price",
|
|
description="Predicts the price of a house based on its features"
|
|
)
|
|
async def predict_price(input_data: HousePredictionInput) -> HousePredictionOutput:
|
|
try:
|
|
predicted_price, confidence_score, similar_listings = model.predict(
|
|
input_data.square_feet,
|
|
input_data.bedrooms,
|
|
input_data.bathrooms
|
|
)
|
|
|
|
return HousePredictionOutput(
|
|
predicted_price=predicted_price,
|
|
confidence_score=confidence_score,
|
|
similar_listings=similar_listings
|
|
)
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=str(e)) |