import warnings warnings.filterwarnings("ignore") import streamlit as st import numpy as np import pandas as pd import mlflow import mlflow.sklearn import os from datetime import datetime st.set_page_config(page_title="HBA1C Prediction", layout="centered") df_patients = pd.read_csv("Hba1cData/dim_patients_final_rev01.csv") patient_ids = df_patients['patient_id'].tolist() # Set the MLflow tracking URI to DagsHub mlflow.set_tracking_uri("https://dagshub.com/sakthi-t/healthcaremlflow.mlflow") # Load the model from MLflow model registry model_name = "ElasticnetHealthcareModel" model_version = 3 model_uri = f"models:/{model_name}/{model_version}" loaded_model = mlflow.sklearn.load_model(model_uri) def predict_hba1c(patient_id, visited_date, sugar): # Prepare input data visited_date = pd.to_datetime(visited_date) data = { 'patient_id': [patient_id], 'sugar': [sugar], 'year': [visited_date.year], 'month': [visited_date.month], 'day': [visited_date.day] } input_df = pd.DataFrame(data) # Make prediction prediction = loaded_model.predict(input_df) return prediction[0] # Streamlit interface st.title("HBA1C Prediction") st.write("Select Patient ID, Visited Date, and Sugar value to predict HBA1C.") st.markdown( """
Choose sugar levels between 50 and 600. HBA1C levels are influenced by sugar values: higher sugar typically results in higher HBA1C. This machine learning project uses synthetic data and is not a definitive method to determine HBA1C levels. For accurate results, please select a date within 2024. The dataset contains dates from 2023 to April 2024. Patient names are fictional. Users can only select from existing patient IDs, and there is no correlation between User ID and sugar levels.
""", unsafe_allow_html=True ) patient_id = st.selectbox("Patient ID", patient_ids) visited_date = st.date_input("Visited Date", min_value=datetime(2023, 1, 1), max_value=datetime(2024, 4, 30)) sugar = st.number_input("Sugar", min_value=50.0, max_value=600.0, value=100.0) if st.button("Predict HBA1C"): prediction = predict_hba1c(patient_id, visited_date, sugar) st.write(f"Predicted HBA1C: {prediction}")