Spaces:
Sleeping
Sleeping
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) |