|
import streamlit as st |
|
import pandas as pd |
|
import requests |
|
|
|
|
|
st.title("Penguin Species Predictor") |
|
|
|
|
|
def fetch_model_details(model_id): |
|
response = requests.get(f"https://render-fastapi-ku5n.onrender.com/model/?model_id={model_id}") |
|
if response.status_code == 200: |
|
model_details = response.json()["model"][0] |
|
st.write("### Selected Model Details") |
|
for key, value in model_details.items(): |
|
st.write(f"{key}: {value}") |
|
else: |
|
st.error("Failed to fetch model details.") |
|
|
|
|
|
model_options = { |
|
"Model 1": 101, |
|
"Model 2": 102, |
|
} |
|
model_name = st.selectbox("Select a Model", options=list(model_options.keys())) |
|
model_id = model_options[model_name] |
|
|
|
|
|
fetch_model_details(model_id) |
|
|
|
|
|
st.write("## Enter Penguin Features") |
|
bill_length_mm = st.number_input("Bill Length (mm)", min_value=0.0, format="%.2f") |
|
bill_depth_mm = st.number_input("Bill Depth (mm)", min_value=0.0, format="%.2f") |
|
flipper_length_mm = st.number_input("Flipper Length (mm)", min_value=0.0, format="%.2f") |
|
body_mass_g = st.number_input("Body Mass (g)", min_value=0.0, format="%.2f") |
|
|
|
|
|
if st.button("Predict"): |
|
|
|
payload = { |
|
"model_id": model_id - 100, |
|
"bill_length_mm": bill_length_mm, |
|
"bill_depth_mm": bill_depth_mm, |
|
"flipper_length_mm": flipper_length_mm, |
|
"body_mass_g": body_mass_g |
|
} |
|
|
|
response = requests.post("https://render-fastapi-ku5n.onrender.com/predict/", json=payload) |
|
if response.status_code == 200: |
|
|
|
prediction = response.json()["prediction"] |
|
st.write(f"## Predicted Penguin Species: {prediction}") |
|
else: |
|
|
|
st.error(f"Failed to make prediction. Status code: {response.status_code} Response: {response.text}") |
|
|