Update README.md
Browse files
README.md
CHANGED
@@ -1,3 +1,124 @@
|
|
1 |
-
---
|
2 |
-
license: mit
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
license: mit
|
3 |
+
language:
|
4 |
+
- en
|
5 |
+
metrics:
|
6 |
+
- precision
|
7 |
+
- recall
|
8 |
+
- accuracy
|
9 |
+
pipeline_tag: tabular-classification
|
10 |
+
library_name: sklearn
|
11 |
+
tags:
|
12 |
+
- healthcare
|
13 |
+
- science
|
14 |
+
---
|
15 |
+
|
16 |
+
|
17 |
+
### Model Description
|
18 |
+
|
19 |
+
<!-- Provide a longer summary of what this model is. -->
|
20 |
+
The following model is designed to predict, given a certain number of inputs, whether a person has and/or is it at risk of acquiring heart disease.
|
21 |
+
This model is composed of 13 input features, and is designed to work within form-based applications, i.e. software applications which require
|
22 |
+
user input.
|
23 |
+
|
24 |
+
NOTE: The following model is meant as an assistive tool, and must NOT directly be used to produce the final verdict on a person or patient's condition.
|
25 |
+
As it is meant to promote further evaluations upon having completed its prediction.
|
26 |
+
|
27 |
+
|
28 |
+
- **Developed by:** DeepNeural
|
29 |
+
- **Model type:** Tabular Classifier
|
30 |
+
- **Language(s):** English
|
31 |
+
- **License:** MIT
|
32 |
+
|
33 |
+
### Model Inputs
|
34 |
+
| Variable Name | Type | Description & Input Value |
|
35 |
+
|--------------------|---------|-------------------------------------------------------------------------------|
|
36 |
+
| age | Integer |Patient's age
|
37 |
+
| sex | Binary | Patient's sex (1 = male 0 = female)
|
38 |
+
| chest pain type | Integer | 1 = Typical angina, 2 = atypical angina 3 = non-anginal pain 4 = asymptomatic
|
39 |
+
| resting blood pressure | Integer | resting blood pressure (in mm Hg on admission to the hospital)
|
40 |
+
| serum cholestoral in mg/dl | Integer |
|
41 |
+
| fasting blood sugar > 120 mg/dl | Binary | is the patient's blood sugar level greater than 120 mg/dl?
|
42 |
+
| resting electrocardiographic results (values 0,1,2) | Integer | 0 = normal 1 = having ST-T wave abnormality (T wave inversions and/or ST elevation or depression of > 0.05 mV) 2 = showing probable or definite left ventricular hypertrophy by Estes' criteria |
|
43 |
+
| maximum heart rate achieved | Integer |
|
44 |
+
| exercise induced angina | Binary | Does the patient suffer from exercise induced angina?
|
45 |
+
| oldpeak | Integer | ST depression induced by exercise relative to rest |
|
46 |
+
| the slope of the peak exercise ST segment | Integer | 1 = upsloping 2 = flat 3 = downsloping
|
47 |
+
| number of major vessels (0-3) colored by flourosopy | Integer |
|
48 |
+
| thal | Integer | 0 = normal; 1 = fixed defect; 2 = reversable defect
|
49 |
+
|
50 |
+
### Model Sources
|
51 |
+
|
52 |
+
<!-- Provide the basic links for the model. -->
|
53 |
+
|
54 |
+
- **Repository:** https://www.kaggle.com/datasets/johnsmith88/heart-disease-dataset
|
55 |
+
|
56 |
+
## Uses
|
57 |
+
|
58 |
+
<!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
|
59 |
+
This model is primarily designed for Data Scientists, Software Engineers and Machine Learning Engineers who have an interest in developing heart disease
|
60 |
+
software applications, for various healthcare institutions, ranging from hospitals to clinics. Furthermore, this model is also designed for educational
|
61 |
+
purposes within acadamia, whereby diabetic risk-analysis is a priority of the study.
|
62 |
+
|
63 |
+
Foreseeable users of the software applications to be developed with this model include: doctors, nurses (with respect to their patients)
|
64 |
+
|
65 |
+
|
66 |
+
## Bias, Risks, and Limitations
|
67 |
+
|
68 |
+
<!-- This section is meant to convey both technical and sociotechnical limitations. -->
|
69 |
+
Please be adviced that our model was trained on a specific dataset for heart disease classification,
|
70 |
+
and although it has an high level of accuracy and precision, there may come certain moments where misclassifications occur.
|
71 |
+
|
72 |
+
### Recommendations
|
73 |
+
|
74 |
+
<!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
|
75 |
+
|
76 |
+
Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More research needed for further recommendations.
|
77 |
+
Furthermore, the following model will continously undergo improvements and testing for better results capable of fixing the limitations mentioned in the previous
|
78 |
+
section.
|
79 |
+
|
80 |
+
## How to Get Started with the Model
|
81 |
+
To properly make use of this model, please refer to the illustration below, which
|
82 |
+
showcases how this model can be loaded directly into an application. Please note, that,
|
83 |
+
because it was built with the Scikit-Learn Machine Learning library, the model has been saved
|
84 |
+
as a .joblib file. With that in mind, please proceed by copying the following code into your coding environment (Python).
|
85 |
+
|
86 |
+
1. Install Joblib
|
87 |
+
```python
|
88 |
+
!pip install joblib
|
89 |
+
|
90 |
+
```
|
91 |
+
|
92 |
+
2. Load the model Upon Installation
|
93 |
+
```python
|
94 |
+
my_model = joblib.load('heart_disease_classifier_model_v1.joblib')
|
95 |
+
|
96 |
+
```
|
97 |
+
|
98 |
+
3. Make predictions (Binary or Probability)
|
99 |
+
```python
|
100 |
+
my_model.predict(X_test)
|
101 |
+
|
102 |
+
# For probability-based outputs
|
103 |
+
|
104 |
+
my_model.predict_proba(X_test)
|
105 |
+
```
|
106 |
+
|
107 |
+
NOTE: This model requires input data in a 2-Dimensional format (Pandas Series) with the column names,
|
108 |
+
considering the model is to be used in form-based applications.
|
109 |
+
|
110 |
+
|
111 |
+
#### Metrics
|
112 |
+
|
113 |
+
<!-- These are the evaluation metrics being used, ideally with a description of why. -->
|
114 |
+
We tested our model by implementing various ML models, namely: logistic regression, Stochastic Gradient Descent, Support Vector Machines, and
|
115 |
+
K-Nearest Neighbor models. After performing hyperparameter tuning we opted to prioritize the K-Nearest Neighbor model for predictive purposes
|
116 |
+
as it showed the best results. The metrics used were accuracy, precision, recall, f1-score and AUC.
|
117 |
+
The results for our model can be seen in the 'Results' section.
|
118 |
+
|
119 |
+
### Results
|
120 |
+
|
121 |
+
Accuracy - 94%
|
122 |
+
Precision - 94%
|
123 |
+
Recall - 94%
|
124 |
+
AUC ROC - 94%
|