| 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}") |
|
|