Spaces:
Sleeping
Sleeping
from fastapi import FastAPI, Request, Form | |
from fastapi.responses import HTMLResponse | |
from fastapi.templating import Jinja2Templates | |
import numpy as np | |
import skops.io as sio | |
import joblib | |
app = FastAPI() | |
templates = Jinja2Templates(directory="app/templates") | |
# Load the saved model and preprocessing pipeline | |
model = sio.load("models/water_quality_model.skops") | |
preprocessing_pipeline = joblib.load("models/scaler.joblib") | |
async def home(request: Request): | |
return templates.TemplateResponse("form.html", {"request": request}) | |
async def predict( | |
request: Request, | |
ph: float = Form(...), | |
Hardness: float = Form(...), | |
Solids: float = Form(...), | |
Chloramines: float = Form(...), | |
Sulfate: float = Form(...), | |
Conductivity: float = Form(...), | |
Organic_carbon: float = Form(...), | |
Trihalomethanes: float = Form(...), | |
Turbidity: float = Form(...), | |
): | |
input_data = np.array( | |
[ | |
[ | |
ph, | |
Hardness, | |
Solids, | |
Chloramines, | |
Sulfate, | |
Conductivity, | |
Organic_carbon, | |
Trihalomethanes, | |
Turbidity, | |
] | |
] | |
) | |
# Preprocess input data | |
input_preprocessed = preprocessing_pipeline.transform(input_data) | |
prediction = model.predict(input_preprocessed) | |
result = "Potable" if prediction[0] == 1 else "Not Potable" | |
return templates.TemplateResponse( | |
"result.html", {"request": request, "result": result} | |
) | |