#
In the field of healthcare, the stethoscope has been an indispensable tool for diagnosing cardiovascular conditions by listening to the heart's sounds. These auditory cues provide valuable information to skilled medical professionals and we are attempting to use machine learning to give an early indication of heart conditions
Machine learning models
Deep learning models
Model | Features | Accuracy |
---|---|---|
Single MLP | Chromagram + 1D Mel-Spec + MFCC + Opensmile + CSV + Time Series | 66.46 |
Multiscale 2D CNN | 2D Mel-Spec | 58.23 |
1D CNN | Bandpower Struct + CSV | 68.95 |
Concat-CNN | Chromagram + 1D Mel-Spec + MFCC + Bandpower Struct + CSV | 64.22 |
Conv-RNN | 1D Mel-Spec + MFCC + Opensmile + CSV | 64.38 |
ResNet | Chromagram + 1D Mel-Spec + MFCC + Time Series | 55.22 |
Concat-MLP | 2D Mel-Spec + Bandpower Struct + Opensmile + CSV | 59.11 |
LSTM | Chromagram + 2D Mel-Spec + CSV + Time Series | 53.85 |
RNN | Chromagram + Bandpower Struct + CSV + Time Series | 50.00 |
['mfcc'] + hard voting
Model Accuracy AUC
0 LogisticRegression 0.633987 0.64
1 SVC 0.627451 0.63
2 KNeighborsClassifier 0.568627 0.57
3 DecisionTreeClassifier 0.526144 0.52
4 RandomForestClassifier 0.584967 0.59
5 GaussianNB 0.594771 0.60
ensemble_methods : VOTING='hard' 0.630718954248366
['mfcc'] + soft voting
Model Accuracy AUC
0 LogisticRegression 0.545752 0.55
1 SVC 0.581699 0.59
2 KNeighborsClassifier 0.526144 0.53
3 DecisionTreeClassifier 0.555556 0.56
4 RandomForestClassifier 0.558824 0.57
5 GaussianNB 0.542484 0.54
ensemble_methods : VOTING='soft' 0.545751633986928
['feature_chromagram'] + hard voting
Model Accuracy AUC
0 LogisticRegression 0.578431 0.58
1 SVC 0.555556 0.56
2 KNeighborsClassifier 0.549020 0.55
3 DecisionTreeClassifier 0.496732 0.50
4 RandomForestClassifier 0.535948 0.54
5 GaussianNB 0.529412 0.52
ensemble_methods : VOTING='hard' 0.5686274509803921
['feature_chromagram'] + soft voting
Model Accuracy AUC
0 LogisticRegression 0.532680 0.53
1 SVC 0.526144 0.53
2 KNeighborsClassifier 0.509804 0.51
3 DecisionTreeClassifier 0.558824 0.56
4 RandomForestClassifier 0.513072 0.51
5 GaussianNB 0.500000 0.50
ensemble_methods : VOTING='soft' 0.5294117647058824
['feature_melspectrogram'] + hard voting
Model Accuracy AUC
0 LogisticRegression 0.575163 0.56
1 SVC 0.555556 0.54
2 KNeighborsClassifier 0.575163 0.57
3 DecisionTreeClassifier 0.522876 0.52
4 RandomForestClassifier 0.571895 0.57
5 GaussianNB 0.539216 0.52
ensemble_methods : VOTING='hard' 0.565359477124183
['feature_melspectrogram'] + soft voting
Model Accuracy AUC
0 LogisticRegression 0.552288 0.52
1 SVC 0.549020 0.50
2 KNeighborsClassifier 0.526144 0.53
3 DecisionTreeClassifier 0.509804 0.50
4 RandomForestClassifier 0.584967 0.59
5 GaussianNB 0.568627 0.51
ensemble_methods : VOTING='soft' 0.5620915032679739
[feature_bandpower]
Model Accuracy AUC
0 LogisticRegression 0.496732 0.51
1 SVC 0.516340 0.53
2 KNeighborsClassifier 0.532680 0.53
3 DecisionTreeClassifier 0.519608 0.52
4 RandomForestClassifier 0.539216 0.54
5 GaussianNB 0.486928 0.52
ensemble_methods : VOTING='hard' 0.5065359477124183
[NMF]
Model Accuracy AUC
0 LogisticRegression 0.493464 0.49
1 SVC 0.562092 0.56
2 KNeighborsClassifier 0.500000 0.50
3 DecisionTreeClassifier 0.480392 0.48
4 RandomForestClassifier 0.519608 0.52
5 GaussianNB 0.535948 0.51
ensemble_methods : VOTING='hard' 0.5392156862745098
['feature_mfcc', 'feature_chromagram']
Model Accuracy AUC
0 LogisticRegression 0.594771 0.60
1 SVC 0.584967 0.59
2 KNeighborsClassifier 0.496732 0.50
3 DecisionTreeClassifier 0.539216 0.54
4 RandomForestClassifier 0.535948 0.54
5 GaussianNB 0.562092 0.56
ensemble_methods : VOTING='hard' 0.5686274509803921
[feature_mfcc, feature_bandpower]
Model Accuracy AUC
0 LogisticRegression 0.565359 0.57
1 SVC 0.601307 0.60
2 KNeighborsClassifier 0.496732 0.49
3 DecisionTreeClassifier 0.555556 0.56
4 RandomForestClassifier 0.549020 0.55
5 GaussianNB 0.503268 0.51
ensemble_methods : VOTING='hard' 0.5751633986928104
Voting (hard)
Model Accuracy AUC
0 LogisticRegression()_f1 0.594771 0.59
1 SVC()_f1 0.591503 0.59
2 GaussianNB()_f1 0.581699 0.58
3 RandomForestClassifier()_f1 0.539216 0.54
4 SVC()_f2 0.486928 0.49
5 KNeighborsClassifier(n_neighbors=7)_f3 0.539216 0.54
6 LogisticRegression()_f3 0.549020 0.55
ensemble_methods : VOTING='hard' 0.6111111111111112
Voting (soft)
Model Accuracy AUC
0 LogisticRegression()_f1 0.614379 0.61
1 SVC()_f1 0.617647 0.62
2 GaussianNB()_f1 0.565359 0.57
3 RandomForestClassifier()_f1 0.604575 0.60
4 LogisticRegression()_f2 0.490196 0.49
5 LogisticRegression()_f3 0.549020 0.55
ensemble_methods : VOTING='soft' 0.5490196078431373
# Google Colab Folder: https://drive.google.com/drive/folders/1R7UYthWO2DxDS4M7F3t_E6CDGoRBOWn4?usp=share_link
# Dataset link: https://physionet.org/content/circor-heart-sound/1.0.3/
#
pip install -r requirements.txt
#
python install.py
python run.py