Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import numpy as np | |
| import pandas as pd | |
| import pickle | |
| from sklearn.preprocessing import MinMaxScaler | |
| from sklearn.linear_model import LinearRegression | |
| from sklearn.model_selection import train_test_split | |
| # Classification Model Imports | |
| with open('decisionTree.pkl', 'rb') as file: | |
| loadedDecisionTree = pickle.load(file) | |
| with open('linearReg.pkl', 'rb') as file: | |
| loadedLinearReg = pickle.load(file) | |
| with open('mlpRegression.pkl', 'rb') as file: | |
| loadedmlpRegression = pickle.load(file) | |
| # Regression Model Imports | |
| with open('randForest.pkl', 'rb') as file: | |
| loadedForest = pickle.load(file) | |
| with open('knn.pkl', 'rb') as file: | |
| loadedknn = pickle.load(file) | |
| with open('mlpClassification.pkl', 'rb') as file: | |
| loadedmlpClassification = pickle.load(file) | |
| races = ['White', 'Black', 'Chinese', 'Other', 'Korean', 'Hispanic', 'Asian', 'Intermediate', 'Malay', 'Indian'] | |
| modelChoice = gr.inputs.Dropdown(choices=["Decision Tree Regression", "Linear Regression", "MLP Neural Network Regression","Random Forest Classification", "K Nearest Neighbors Classification", "MLP Neural Network Classification"], label="Choose your Model") | |
| # Define the input sliders for continuous features | |
| age = gr.inputs.Slider(minimum=20, maximum=100, step=1, label="Age") | |
| height = gr.inputs.Slider(minimum=140, maximum=200, step=1, label="Height (cm)") | |
| weight = gr.inputs.Slider(minimum=30, maximum=150, step=1, label="Weight (kg)") | |
| inr = gr.inputs.Slider(minimum=0, maximum=4, step=0.01, label="INR on Reported Therapeutic Dose of Warfarin") | |
| # Define the input dropdowns for categorical features | |
| gender = gr.inputs.Dropdown(choices=["Male", "Female"], label="Gender") | |
| race = gr.inputs.Dropdown(choices=races, label="Race") | |
| diabetes = gr.inputs.Dropdown(choices=["No", "Yes"], label="Diabetes") | |
| simvastatin = gr.inputs.Dropdown(choices=["No", "Yes"], label="Simvastatin (Zocor)") | |
| amiodarone = gr.inputs.Dropdown(choices=["No", "Yes"], label="Amiodarone (Cordarone)") | |
| vkorc1 = gr.inputs.Dropdown(choices=["A/A", "A/G", "G/G"], label="VKORC1 genotype") | |
| # Define the output textbox | |
| therapeutic_dose = gr.outputs.Textbox(label="If Classification output = Yes or No (Above 50 mg/week) If Regression output = recomended dose (mg/week)") | |
| # Define the function to make predictions | |
| def predict_therapeutic_dose(modelChoice, gender, race, age, height, weight, diabetes, simvastatin, amiodarone, inr, vkorc1): | |
| # Converting values to values that the models understand | |
| gender = {"Male": 1, "Female": 0}[gender] | |
| race = races.index(race) | |
| diabetes = {"No": 0, "Yes": 1}[diabetes] | |
| simvastatin = {"No": 0, "Yes": 1}[simvastatin] | |
| amiodarone = {"No": 0, "Yes": 1}[amiodarone] | |
| vkorc1 = {"A/A": 1, "A/G": 2, "G/G": 3}[vkorc1] | |
| if modelChoice == "Decision Tree Regression": | |
| predicted_dose = loadedDecisionTree.predict(np.array([[gender, race, age, height, weight, diabetes, simvastatin, amiodarone, inr, vkorc1]])) | |
| elif modelChoice == "Linear Regression": | |
| predicted_dose = loadedLinearReg.predict(np.array([[gender, race, age, height, weight, diabetes, simvastatin, amiodarone, inr, vkorc1]])) | |
| elif modelChoice == "MLP Neural Network Regression": | |
| predicted_dose = loadedmlpRegression.predict(np.array([[gender, race, age, height, weight, diabetes, simvastatin, amiodarone, inr, vkorc1]])) | |
| elif modelChoice == "Random Forest Classification": | |
| predicted_dose = loadedForest.predict(np.array([[gender, race, age, height, weight, diabetes, simvastatin, amiodarone, inr, vkorc1]])) | |
| elif modelChoice == "K Nearest Neighbors Classification": | |
| predicted_dose = loadedknn.predict(np.array([[gender, race, age, height, weight, diabetes, simvastatin, amiodarone, inr, vkorc1]])) | |
| else: | |
| predicted_dose = loadedmlpClassification.predict(np.array([[gender, race, age, height, weight, diabetes, simvastatin, amiodarone, inr, vkorc1]])) | |
| if predicted_dose[0] == 0: | |
| predicted_dose = "No" | |
| elif predicted_dose[0] == 1: | |
| predicted_dose = "Yes" | |
| return predicted_dose | |
| # Create the Gradio interface | |
| gr.Interface( fn=predict_therapeutic_dose, inputs=[modelChoice, gender, race, age, height, weight, diabetes, simvastatin, amiodarone, inr, vkorc1], outputs=therapeutic_dose ).launch(debug=True) |