Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, Request | |
| from pydantic import BaseModel | |
| from typing import List | |
| import joblib | |
| import tensorflow as tf | |
| import numpy as np | |
| from catboost import CatBoostClassifier | |
| from fastapi.templating import Jinja2Templates | |
| from fastapi.responses import HTMLResponse | |
| # App setup | |
| app = FastAPI() | |
| templates = Jinja2Templates(directory="templates") | |
| catboost_model = CatBoostClassifier() | |
| def read_index(request: Request): | |
| return templates.TemplateResponse("index.html", {"request": request}) | |
| # Input model | |
| class PredictionInput(BaseModel): | |
| features: List[float] | |
| # Load models once | |
| ann_model = tf.keras.models.load_model("ann_model.keras") | |
| xgb_model = joblib.load("xgboost.joblib") | |
| voting_model = joblib.load("voting_classifier.joblib") | |
| svm_model = joblib.load("svm.joblib") | |
| rf_model = joblib.load("random_forest.joblib") | |
| lr_model = joblib.load("logistic_regression (1).joblib") | |
| catboost_model.load_model("catboost_model.cbm") | |
| # Prediction endpoints (No auth) | |
| def predict_ann(input_data: PredictionInput): | |
| prediction = ann_model.predict(np.array([input_data.features])) | |
| return {"model": "ANN", "prediction": prediction.tolist()} | |
| def predict_xgboost(input_data: PredictionInput): | |
| prediction = xgb_model.predict([input_data.features]) | |
| return {"model": "XGBoost", "prediction": prediction.tolist()} | |
| def predict_voting(input_data: PredictionInput): | |
| prediction = voting_model.predict([input_data.features]) | |
| return {"model": "VotingClassifier", "prediction": prediction.tolist()} | |
| def predict_svm(input_data: PredictionInput): | |
| prediction = svm_model.predict([input_data.features]) | |
| return {"model": "SVM", "prediction": prediction.tolist()} | |
| def predict_rf(input_data: PredictionInput): | |
| prediction = rf_model.predict([input_data.features]) | |
| return {"model": "RandomForest", "prediction": prediction.tolist()} | |
| def predict_lr(input_data: PredictionInput): | |
| prediction = lr_model.predict([input_data.features]) | |
| return {"model": "LogisticRegression", "prediction": prediction.tolist()} | |
| def predict_catboost(input_data: PredictionInput): | |
| prediction = catboost_model.predict([input_data.features]) | |
| return {"model": "CatBoost", "prediction": prediction.tolist()} | |