Skip to content

emmanuel-123tech/Heart-Disease-Classification-Using-Machine-Learning

Repository files navigation

Heart-Disease-Classification-Using-Machine-Learning

In this project we'll look into using various Python-based machine learning and data science libraries in an attempt to build a machine learning model capable of predicting whether or not someone has heart disease based on their medical attributes.

We're going to take the following approach:

(1). Problem definition

(2). Data

(3). Features

(4). Modelling

  1. Problem Definition In a statement,

Given clinical parameters about a patient, can we predict whether or not they have heart disease?

  1. Data data were imported from the UCI Machine Learning Repository.

3.Features This is where we'll get different information about each of the features in the data.

Create data dictionary

age - age in years

sex - (1 = male; 0 = female)

cp - chest pain type

0: Typical angina: chest pain related decrease blood supply to the heart

1: Atypical angina: chest pain not related to heart

2: Non-anginal pain: typically esophageal spasms (non heart related)

3: Asymptomatic: chest pain not showing signs of disease

trestbps - resting blood pressure (in mm Hg on admission to the hospital) anything above 130-140 is typically cause for concern

chol - serum cholestoral in mg/dl

serum = LDL + HDL + .2 * triglycerides

above 200 is cause for concern

fbs - (fasting blood sugar > 120 mg/dl) (1 = true; 0 = false)

'>126' mg/dL signals diabetes

restecg - resting electrocardiographic results

0: Nothing to note

1: ST-T Wave abnormality

can range from mild symptoms to severe problems

signals non-normal heart beat

2: Possible or definite left ventricular hypertrophy

Enlarged heart's main pumping chamber

thalach - maximum heart rate achieved

exang - exercise induced angina (1 = yes; 0 = no)

oldpeak - ST depression induced by exercise relative to rest looks at stress of heart during excercise unhealthy heart will stress more

slope - the slope of the peak exercise ST segment

0: Upsloping: better heart rate with excercise (uncommon)

1: Flatsloping: minimal change (typical healthy heart)

2: Downslopins: signs of unhealthy heart

ca - number of major vessels (0-3) colored by flourosopy

colored vessel means the doctor can see the blood passing through

the more blood movement the better (no clots)

thal - thalium stress result

1,3: normal

6: fixed defect: used to be defect but ok now

7: reversable defect: no proper blood movement when excercising

target - have disease or not (1=yes, 0=no) (= the predicted attribute)

Preparing the tools

We're going to use pandas, Matplotlib and NumPy for data analysis and manipulation.

Data Exploration

(1).Checking Heart Disease Frequency according to Sex

(2).Age vs. Maximum Heart Rate for Heart Disease

Heart Disease Frequency per Chest Pain Type 3.cp - chest pain type

0: Typical angina: chest pain related decrease blood supply to the heart

1: Atypical angina: chest pain not related to heart

2: Non-anginal pain: typically esophageal spasms (non heart related)

3: Asymptomatic: chest pain not showing signs of disease

Modelling

We'll train it (find the patterns) on the training set.

And we'll test it (use the patterns) on the test set.

We're going to try 3 different machine learning models:

(1).Logistic Regression

(2).K-Nearest Neighbours Classifier

(3). Random Forest Classifier

Model Comparison

Hypyterparameter tuning

Feature importance

Confusion matrix

Cross-validation

Precision

Recall

F1 score

Classification report

ROC curve

Area under the curve (AUC)

Hyperparamter Tuning with GridSearchCV

Evaluting our tuned machine learning classifier, beyond accuracy ROC curve and AUC score

Confusion matrix

Classification report

Precision

Recall

F1-score

... and it would be great if cross-validation was used where possible.

To make comparisons and evaluate our trained model, first we need to make predictions.

Calculate evaluation metrics using cross-validation

We're going to calculate accuracy, precision, recall and f1-score of our model using cross-validation and to do so we'll be using cross_val_score().

Since our LogisticRegression model provides the best scores so far, we'll try and improve them again using GridSearchCV...

Feature Importance Feature importance is another as asking, "which features contributed most to the outcomes of the model and how did they contribute?"

Finding feature importance is different for each machine learning model. One way to find feature importance is to search for "(MODEL NAME) feature importance".

In conclusion the model trained to predict whether a patient has heart disease or not using machine learning is 92.72% accuracy

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published