import gradio as gr import pandas as pd import joblib from sklearn.preprocessing import LabelEncoder # Load the dataset and get the column names dataset = pd.read_csv('Covid Dataset.csv') columns_to_drop = ['Wearing Masks', 'Sanitization from Market'] dataset = dataset.drop(columns_to_drop, axis=1) column_names = dataset.columns.tolist() # Define a function to make predictions using the selected models def predict_covid(*symptoms): # Convert None values to Falses symptoms = [False if symptom is None else symptom for symptom in symptoms] if sum(symptoms) == 0: return "COVID-19 Negative" # Load the saved models model_logreg = joblib.load('logreg_model.h5') model_rf_classifier = joblib.load('rf_classifier_model.h5') model_dt_classifier = joblib.load('dt_classifier_model.h5') model_knn_classifier = joblib.load('knn_classifier_model.h5') model_svm_classifier = joblib.load('svm_classifier_model.h5') model_ann_classifier = joblib.load('ann_model.h5') voting_classifier = joblib.load('voting_classifier_model.h5') stacking_classifier = joblib.load('stacking_classifier_model.h5') # Prepare the input data label_encoder = LabelEncoder() input_data = pd.DataFrame([list(symptoms)], columns=column_names[:-1]) encoded_input_data = input_data.copy() for column in encoded_input_data.columns: if encoded_input_data[column].dtype == object: encoded_input_data[column] = label_encoder.transform(encoded_input_data[column]) # Make predictions using the selected models logreg_prediction = int(model_logreg.predict(encoded_input_data)[0]) rf_prediction = int(model_rf_classifier.predict(encoded_input_data)[0]) dt_prediction = int(model_dt_classifier.predict(encoded_input_data)[0]) knn_prediction = int(model_knn_classifier.predict(encoded_input_data)[0]) svm_prediction = int(model_svm_classifier.predict(encoded_input_data)[0]) ann_prediction = int(model_ann_classifier.predict(encoded_input_data)[0]) voting_prediction = int(voting_classifier.predict(encoded_input_data)[0]) stacking_prediction = int(stacking_classifier.predict(encoded_input_data)[0]) # Determine the overall prediction prediction = 1 if sum([logreg_prediction, rf_prediction, dt_prediction, knn_prediction, svm_prediction, ann_prediction, voting_prediction, stacking_prediction]) >= 4 else 0 # Return the prediction return "COVID-19 Positive" if prediction == 1 else "COVID-19 Negative" # Create a list of checkboxes for the dataset columns checkboxes = [gr.inputs.Checkbox(label=column_name) for column_name in column_names[:-1]] # Create the input interface with the checkboxes inputs = checkboxes # Create the output interface with the predicted labels outputs = gr.outputs.Label(num_top_classes=1, label="COVID-19 Status") title = "COVID-19 Detection" description = "Select your symptoms and contact history to check if you have COVID-19" final_model = gr.Interface(fn=predict_covid, inputs=inputs, outputs=outputs, title=title, description=description) # Create the Gradio app if __name__ == '__main__': final_model.launch(inline=False)