Pushp123's picture
Create app.py
669b1bc verified
#1. Importing Lib
import gradio as gr
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score,r2_score
#2. Data Preprocessing
df=pd.read_csv("heart.csv")
# Spliting data into x and y (independent/dependent)
x=df.drop("target",axis=1)
y=df["target"]
#3. Modeling Part
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=0)
model=LogisticRegression()
model.fit(x_train,y_train)
model.fit(x_test,y_test)
x_predict=model.predict(x_train)
x_accuracy=accuracy_score(x_predict,y_train)
y_predict=model.predict(x_test)
y_accuracy=accuracy_score(y_predict,y_test)
#4. UI for Model using gradio
# Function to make predictions
def predict_heart_disease(age, sex, cp, trestbps, chol, fbs, restecg, thalach, exang, oldpeak, slope, ca, thal):
input_data = np.array([[age, sex, cp, trestbps, chol, fbs, restecg, thalach, exang, oldpeak, slope, ca, thal]])
prediction = model.predict(input_data)
if prediction[0] == 0:
return "Person does not have Heart Disease"
else:
return "Person has Heart Disease"
# Create the Gradio interface
iface = gr.Interface(
fn=predict_heart_disease, # Function that makes predictions
inputs=[
gr.Slider(minimum=29, maximum=77, step=1, label="Age"),
gr.Dropdown([0, 1], label="Sex (0 = Female, 1 = Male)"),
gr.Dropdown([0, 1, 2, 3], label="Chest Pain Type (cp)"),
gr.Slider(minimum=90, maximum=200, step=1, label="Resting Blood Pressure (trestbps)"),
gr.Slider(minimum=120, maximum=600, step=1, label="Serum Cholesterol (chol)"),
gr.Dropdown([0, 1], label="Fasting Blood Sugar (fbs)"),
gr.Dropdown([0, 1,2], label="Resting Electrocardiographic Results (restecg)"),
gr.Slider(minimum=70, maximum=202, step=1, label="Maximum Heart Rate Achieved (thalach)"),
gr.Dropdown([0, 1], label="Exercise Induced Angina (exang)"),
gr.Slider(minimum=0.0, maximum=6.2, step=0.1, label="Oldpeak (depression induced by exercise)"),
gr.Dropdown([0, 1, 2], label="Slope of the Peak Exercise ST Segment (slope)"),
gr.Dropdown([0, 1, 2,3,4], label="Number of Major Vessels Colored by Fluoroscopy (ca)"),
gr.Dropdown([0, 1, 2, 3], label="Thalassemia (thal)")
], # Input fields
outputs="text" # Output the prediction result as text
)
# Launch the Gradio UI
iface.launch()