import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.neural_network import MLPClassifier
from sklearn.neighbors import KNeighborsClassifier
from xgboost import XGBClassifier
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, classification_report
import warnings
warnings.filterwarnings('ignore')
from google.colab import drive
Data Load
data = pd.read_csv(r'/content/heart_failure_clinical_records_dataset - Copy.csv')
sns.pairplot(data[selected_features], hue='DEATH_EVENT', diag_kind='kde')
plt.suptitle('Pairplot of Selected Numerical Features by DEATH_EVENT', y=1.02)
plt.show()
Data Preprocessing
Data Split
data.drop(columns=['age_group'], inplace=True)
X = data.drop('DEATH_EVENT', axis=1)
y = data['DEATH_EVENT']
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)
continuous_features = ['age', 'creatinine_phosphokinase', 'ejection_fraction','platelets', 'serum_creatinine', 'serum_sodium', 'time']
data[continuous_features] = scaler.transform(data[continuous_features])
prediction = model.predict(data)[0]
return " At Risk" if prediction == 1 else " Not At Risk"
inputs = [
gr.Number(label="Age"),
gr.Number(label="Creatinine Phosphokinase, Range [0,100000]"),
gr.Number(label="Ejection Fraction, Range [5,85] "),
gr.Number(label="Platelets, Range [5000,2000000]"),
gr.Number(label="Serum Creatinine, Range [0.1,60]"),
gr.Number(label="Serum Sodium, Range [95,255]"),
gr.Number(label="Follow-up Time (days)"),
gr.Radio([0, 1], label="Anaemia (0=No, 1=Yes)"),
gr.Radio([0, 1], label="Diabetes (0=No, 1=Yes)"),
gr.Radio([0, 1], label="High Blood Pressure (0=No, 1=Yes)"),
gr.Radio([0, 1], label="Sex (0=Female, 1=Male)"),
gr.Radio([0, 1], label="Smoking (0=No, 1=Yes)")
]
gr.Interface(
fn=predict_heart_risk,
inputs=inputs,
outputs="text",
title=" Heart Failure Risk Predictor",
description="Enter patient data to predict if they are at risk of heart failure.",
allow_flagging="never"
).launch()