Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import numpy as np | |
| import pandas as pd | |
| import joblib | |
| from sklearn.model_selection import train_test_split | |
| from sklearn.ensemble import RandomForestClassifier | |
| # Sample synthetic dataset creation | |
| def create_dataset(): | |
| np.random.seed(42) | |
| num_samples = 1000 | |
| age = np.random.randint(18, 90, num_samples) | |
| severity_score = np.random.uniform(0, 100, num_samples) | |
| ventilator_support = np.random.choice([0, 1], num_samples) | |
| length_of_stay = np.random.randint(1, 30, num_samples) | |
| discharge_destinations = np.random.choice(["Home", "Death", "Nursing Facility", "Rehabilitation"], num_samples) | |
| data = pd.DataFrame({ | |
| "Age": age, | |
| "Severity_Score": severity_score, | |
| "Ventilator_Support": ventilator_support, | |
| "Length_of_Stay": length_of_stay, | |
| "Discharge_Destination": discharge_destinations | |
| }) | |
| return data | |
| # Generate dataset | |
| df = create_dataset() | |
| # Train model | |
| X = df.drop(columns=["Discharge_Destination"]) | |
| y = df["Discharge_Destination"] | |
| X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) | |
| model = RandomForestClassifier(n_estimators=100, random_state=42) | |
| model.fit(X_train, y_train) | |
| # Save model | |
| joblib.dump(model, "icu_model.pkl") | |
| # Load model | |
| loaded_model = joblib.load("icu_model.pkl") | |
| # Prediction function | |
| def predict_discharge(age, severity_score, ventilator_support, length_of_stay): | |
| input_data = np.array([[age, severity_score, ventilator_support, length_of_stay]]) | |
| prediction = loaded_model.predict(input_data)[0] | |
| return prediction | |
| # Gradio UI | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# ICU Patient Discharge Destination Predictor") | |
| age = gr.Number(label="Age", value=30, minimum=18, maximum=90) | |
| severity_score = gr.Number(label="Severity Score", value=50, minimum=0, maximum=100) | |
| ventilator_support = gr.Radio(["No", "Yes"], label="Ventilator Support", value="No", type="index") | |
| length_of_stay = gr.Number(label="Length of Stay (Days)", value=5, minimum=1, maximum=30) | |
| output = gr.Textbox(label="Predicted Discharge Destination") | |
| submit = gr.Button("Predict") | |
| submit.click(predict_discharge, inputs=[age, severity_score, ventilator_support, length_of_stay], outputs=output) | |
| demo.launch() | |