Percentile_rank / app.py
ak0601's picture
Update app.py
fc3c462 verified
raw
history blame
1.27 kB
from fastapi import FastAPI
import joblib
import uvicorn
app = FastAPI()
model = joblib.load('ridge_model.pkl')
poly = joblib.load('polynomial_transformer.pkl')
def predict_corrected_rank(percentile: float, total_candidates: int) -> float:
# Calculate initial predicted rank using the formula
predicted_rank = ((100 - percentile) * total_candidates) / 100
# Predict correction factor using the polynomial regression model
percentile_poly = poly.transform([[percentile]])
predicted_correction = model.predict(percentile_poly)[0][0]
# Adjust the predicted rank with the correction factor
corrected_rank = predicted_rank + predicted_correction
# Ensure the rank does not exceed the total number of candidates or become negative
corrected_rank = max(1, min(corrected_rank, total_candidates))
return round(corrected_rank)
@app.get("/predict")
def get_corrected_rank(percentile: float, total_candidates: int):
corrected_rank = predict_corrected_rank(percentile, total_candidates)
return {"percentile": percentile, "total_candidates": total_candidates, "corrected_rank": corrected_rank}
if __name__ == "__main__":
# logger.info("Starting PreCollege Data Scraper Server...")
uvicorn.run(app, host="0.0.0.0", port=7860)