Heart Disease¶
Description¶
Context¶
This database contains 76 attributes, but all published experiments refer to using a subset of 14 of them. In particular, the Cleveland database is the only one that has been used by ML researchers to this date. The "goal" field refers to the presence of heart disease in the patient. It is integer valued from 0 (no presence) to 4.
Content¶
Attribute Information:¶
- age
- sex
- chest pain type (4 values)
- resting blood pressure
- serum cholestoral in mg/dl
- fasting blood sugar > 120 mg/dl
- resting electrocardiographic results (values 0,1,2)
- maximum heart rate achieved
- exercise induced angina
- oldpeak = ST depression induced by exercise relative to rest
- the slope of the peak exercise ST segment
- number of major vessels (0-3) colored by flourosopy
- thal: 3 = normal; 6 = fixed defect; 7 = reversable defect
Acknowledgements¶
Creators:¶
- Hungarian Institute of Cardiology. Budapest: Andras Janosi, M.D.
- University Hospital, Zurich, Switzerland: William Steinbrunn, M.D.
- University Hospital, Basel, Switzerland: Matthias Pfisterer, M.D.
- V.A. Medical Center, Long Beach and Cleveland Clinic Foundation: Robert Detrano, M.D., Ph.D.
- Donor: David W. Aha (aha '@' ics.uci.edu) (714) 856-8779
Adapted From¶
https://www.kaggle.com/ronitf/heart-disease-uci
Goals¶
Train at least 5 different ML models to identify whether a patient has Heart Disease
Data Dictionary¶
From Imram Faroouq's Discussion Post in Kaggle
- 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
- looks at stress of heart during excercise
- 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)
Importing Libraries¶
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
Data Analysis¶
Data Import¶
rawData = pd.read_csv("heart.csv");
Data Review and Summaries¶
rawData.head()
age | sex | cp | trestbps | chol | fbs | restecg | thalach | exang | oldpeak | slope | ca | thal | target | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 63 | 1 | 3 | 145 | 233 | 1 | 0 | 150 | 0 | 2.3 | 0 | 0 | 1 | 1 |
1 | 37 | 1 | 2 | 130 | 250 | 0 | 1 | 187 | 0 | 3.5 | 0 | 0 | 2 | 1 |
2 | 41 | 0 | 1 | 130 | 204 | 0 | 0 | 172 | 0 | 1.4 | 2 | 0 | 2 | 1 |
3 | 56 | 1 | 1 | 120 | 236 | 0 | 1 | 178 | 0 | 0.8 | 2 | 0 | 2 | 1 |
4 | 57 | 0 | 0 | 120 | 354 | 0 | 1 | 163 | 1 | 0.6 | 2 | 0 | 2 | 1 |
print(rawData.info())
<class 'pandas.core.frame.DataFrame'> RangeIndex: 303 entries, 0 to 302 Data columns (total 14 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 age 303 non-null int64 1 sex 303 non-null int64 2 cp 303 non-null int64 3 trestbps 303 non-null int64 4 chol 303 non-null int64 5 fbs 303 non-null int64 6 restecg 303 non-null int64 7 thalach 303 non-null int64 8 exang 303 non-null int64 9 oldpeak 303 non-null float64 10 slope 303 non-null int64 11 ca 303 non-null int64 12 thal 303 non-null int64 13 target 303 non-null int64 dtypes: float64(1), int64(13) memory usage: 33.3 KB None
It can be seen that all the data is numerical, complete, and valid. This can be verified from the sources mentioned above. Thus, No encoding or imputing is necessary.
General Sample Statistics¶
The following table describes the center and spread of each data column.
rawData.describe()
age | sex | cp | trestbps | chol | fbs | restecg | thalach | exang | oldpeak | slope | ca | thal | target | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 303.000000 | 303.000000 | 303.000000 | 303.000000 | 303.000000 | 303.000000 | 303.000000 | 303.000000 | 303.000000 | 303.000000 | 303.000000 | 303.000000 | 303.000000 | 303.000000 |
mean | 54.366337 | 0.683168 | 0.966997 | 131.623762 | 246.264026 | 0.148515 | 0.528053 | 149.646865 | 0.326733 | 1.039604 | 1.399340 | 0.729373 | 2.313531 | 0.544554 |
std | 9.082101 | 0.466011 | 1.032052 | 17.538143 | 51.830751 | 0.356198 | 0.525860 | 22.905161 | 0.469794 | 1.161075 | 0.616226 | 1.022606 | 0.612277 | 0.498835 |
min | 29.000000 | 0.000000 | 0.000000 | 94.000000 | 126.000000 | 0.000000 | 0.000000 | 71.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
25% | 47.500000 | 0.000000 | 0.000000 | 120.000000 | 211.000000 | 0.000000 | 0.000000 | 133.500000 | 0.000000 | 0.000000 | 1.000000 | 0.000000 | 2.000000 | 0.000000 |
50% | 55.000000 | 1.000000 | 1.000000 | 130.000000 | 240.000000 | 0.000000 | 1.000000 | 153.000000 | 0.000000 | 0.800000 | 1.000000 | 0.000000 | 2.000000 | 1.000000 |
75% | 61.000000 | 1.000000 | 2.000000 | 140.000000 | 274.500000 | 0.000000 | 1.000000 | 166.000000 | 1.000000 | 1.600000 | 2.000000 | 1.000000 | 3.000000 | 1.000000 |
max | 77.000000 | 1.000000 | 3.000000 | 200.000000 | 564.000000 | 1.000000 | 2.000000 | 202.000000 | 1.000000 | 6.200000 | 2.000000 | 4.000000 | 3.000000 | 1.000000 |
Plotting the Raw Data¶
We can further analyze the data by plotting histograms for each dataset feature.
rawData.hist(bins=30, figsize=(20,25), grid=False, layout=(7,2), sharex=False);
General Correlations¶
corr_mat = rawData.corr(method='pearson')
mask = np.triu(np.ones_like(corr_mat, dtype=bool))
plt.figure(dpi=100)
plt.title("Pearson's R Correlation Matrix")
sns.heatmap(corr_mat, mask=mask, annot=False, lw=3, linecolor='white', cmap='rocket');
Data preprocessing¶
First we scale all the data, since it was seen above that the center, spread, and range of each feature vary wildly.
Input/Output Splitting¶
x = rawData.iloc[:,:-1].values
y = rawData.iloc[:, -1].values
Input Data Scaling¶
Since this is a classification problem, output data is binary (discrete) and must not be scaled.
from sklearn.preprocessing import StandardScaler
ssIN = StandardScaler()
scaledx = ssIN.fit_transform(x)
pd.DataFrame(scaledx)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.952197 | 0.681005 | 1.973123 | 0.763956 | -0.256334 | 2.394438 | -1.005832 | 0.015443 | -0.696631 | 1.087338 | -2.274579 | -0.714429 | -2.148873 |
1 | -1.915313 | 0.681005 | 1.002577 | -0.092738 | 0.072199 | -0.417635 | 0.898962 | 1.633471 | -0.696631 | 2.122573 | -2.274579 | -0.714429 | -0.512922 |
2 | -1.474158 | -1.468418 | 0.032031 | -0.092738 | -0.816773 | -0.417635 | -1.005832 | 0.977514 | -0.696631 | 0.310912 | 0.976352 | -0.714429 | -0.512922 |
3 | 0.180175 | 0.681005 | 0.032031 | -0.663867 | -0.198357 | -0.417635 | 0.898962 | 1.239897 | -0.696631 | -0.206705 | 0.976352 | -0.714429 | -0.512922 |
4 | 0.290464 | -1.468418 | -0.938515 | -0.663867 | 2.082050 | -0.417635 | 0.898962 | 0.583939 | 1.435481 | -0.379244 | 0.976352 | -0.714429 | -0.512922 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
298 | 0.290464 | -1.468418 | -0.938515 | 0.478391 | -0.101730 | -0.417635 | 0.898962 | -1.165281 | 1.435481 | -0.724323 | -0.649113 | -0.714429 | 1.123029 |
299 | -1.033002 | 0.681005 | 1.973123 | -1.234996 | 0.342756 | -0.417635 | 0.898962 | -0.771706 | -0.696631 | 0.138373 | -0.649113 | -0.714429 | 1.123029 |
300 | 1.503641 | 0.681005 | -0.938515 | 0.706843 | -1.029353 | 2.394438 | 0.898962 | -0.378132 | -0.696631 | 2.036303 | -0.649113 | 1.244593 | 1.123029 |
301 | 0.290464 | 0.681005 | -0.938515 | -0.092738 | -2.227533 | -0.417635 | 0.898962 | -1.515125 | 1.435481 | 0.138373 | -0.649113 | 0.265082 | 1.123029 |
302 | 0.290464 | -1.468418 | 0.032031 | -0.092738 | -0.198357 | -0.417635 | -1.005832 | 1.064975 | -0.696631 | -0.896862 | -0.649113 | 0.265082 | -0.512922 |
303 rows × 13 columns
Train and Test Split¶
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(scaledx, y, test_size = 0.2);
#pd.DataFrame(x_test)
#pd.DataFrame(x_train)
Model Training¶
We train the following models:
- Linear SVC
- Kernel SVC
- RBF
- Polynomial
- KNN
- Naive Bayes
- Random Forest
- Logistic Regression
- Discriminant Analysis
models = [];
SVC¶
from sklearn.svm import SVC
linSVCmodel = SVC() #C Param can be optimized
linSVCmodel.fit(x_train,y_train);
models.append(linSVCmodel);
Kernel SVC: Radial Basis Function¶
from sklearn.svm import SVC
rbfSVCmodel = SVC(kernel='rbf'); #C can be optimized
rbfSVCmodel.fit(x_train,y_train);
models.append(rbfSVCmodel);
Kernel SVC: Polynomial¶
from sklearn.svm import SVC
polySVCmodel = SVC(kernel='poly', degree=3); #Degree can be optimized
polySVCmodel.fit(x_train,y_train);
models.append(polySVCmodel);
KNN¶
from sklearn.neighbors import KNeighborsClassifier
KNNmodel = KNeighborsClassifier(n_neighbors=5, p=2); #K can be optimized
KNNmodel.fit(x_train, y_train);
models.append(KNNmodel);
Naive Bayes¶
from sklearn.naive_bayes import GaussianNB
gaussNBmodel = GaussianNB(); #Epsilon can be optimized?
gaussNBmodel.fit(x_train, y_train);
models.append(gaussNBmodel);
Random Forest¶
from sklearn.ensemble import RandomForestClassifier
RFCmodel = RandomForestClassifier(n_estimators=100); #N_estimators and criterion can be optimized.
RFCmodel.fit(x_train, y_train);
models.append(RFCmodel);
Logistic Regression¶
from sklearn.linear_model import LogisticRegression
LRmodel = LogisticRegression(); #DNC
LRmodel.fit(x_train, y_train);
#models.append(LRmodel); ## Does not converge
Convergence Issues¶
It was noted that the Logistic Regressor does not converge on a solution for this paticular classification problem. This particular model will be discarded from future analysis.
Decision Tree¶
from sklearn.tree import DecisionTreeClassifier
DTmodel = DecisionTreeClassifier();
DTmodel.fit(X=x_train, y=y_train);
models.append(DTmodel);
Linear Discriminant Analysis¶
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
LDAmodel = LinearDiscriminantAnalysis();
LDAmodel.fit(X=x_train, y=y_train);
models.append(LDAmodel);
ANN¶
Added as recommended by Ahmad, not for scoring
import tensorflow as tf
from tensorflow import keras
# ANNm = keras.models.Sequential(
# [
# keras.layers.Dense(units=13, activation='relu', name='InputLayer'),
# keras.layers.Dense(units=13/2, activation='relu', name='HiddenLayer'),
# keras.layers.Dense(units=1, activation='sigmoid', name='OutputLayer')
# ]);
# ANNm.compile(optimizer='sgd', metrics=['accuracy','mse'], loss='binary_crossentropy');
ANNm.fit(x_train, y_train, batch_size=50, epochs=400, verbose=1)
models[9]=(ANNm);
Epoch 1/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2920 - accuracy: 0.8760 - mse: 0.0891 Epoch 2/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2915 - accuracy: 0.8802 - mse: 0.0890 Epoch 3/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2914 - accuracy: 0.8802 - mse: 0.0889 Epoch 4/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2911 - accuracy: 0.8760 - mse: 0.0888 Epoch 5/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2908 - accuracy: 0.8760 - mse: 0.0887 Epoch 6/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2905 - accuracy: 0.8760 - mse: 0.0886 Epoch 7/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2902 - accuracy: 0.8760 - mse: 0.0885 Epoch 8/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2902 - accuracy: 0.8802 - mse: 0.0885 Epoch 9/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2899 - accuracy: 0.8760 - mse: 0.0884 Epoch 10/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2895 - accuracy: 0.8760 - mse: 0.0882 Epoch 11/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2895 - accuracy: 0.8760 - mse: 0.0882 Epoch 12/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2891 - accuracy: 0.8760 - mse: 0.0881 Epoch 13/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2888 - accuracy: 0.8760 - mse: 0.0880 Epoch 14/400 5/5 [==============================] - 0s 3ms/step - loss: 0.2885 - accuracy: 0.8760 - mse: 0.0879 Epoch 15/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2883 - accuracy: 0.8760 - mse: 0.0878 Epoch 16/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2882 - accuracy: 0.8719 - mse: 0.0878 Epoch 17/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2880 - accuracy: 0.8678 - mse: 0.0877 Epoch 18/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2876 - accuracy: 0.8678 - mse: 0.0876 Epoch 19/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2873 - accuracy: 0.8678 - mse: 0.0875 Epoch 20/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2870 - accuracy: 0.8678 - mse: 0.0874 Epoch 21/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2868 - accuracy: 0.8678 - mse: 0.0873 Epoch 22/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2866 - accuracy: 0.8678 - mse: 0.0872 Epoch 23/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2865 - accuracy: 0.8678 - mse: 0.0872 Epoch 24/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2862 - accuracy: 0.8678 - mse: 0.0871 Epoch 25/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2860 - accuracy: 0.8678 - mse: 0.0870 Epoch 26/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2857 - accuracy: 0.8678 - mse: 0.0869 Epoch 27/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2858 - accuracy: 0.8678 - mse: 0.0870 Epoch 28/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2852 - accuracy: 0.8678 - mse: 0.0868 Epoch 29/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2850 - accuracy: 0.8678 - mse: 0.0867 Epoch 30/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2849 - accuracy: 0.8678 - mse: 0.0867 Epoch 31/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2846 - accuracy: 0.8678 - mse: 0.0866 Epoch 32/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2844 - accuracy: 0.8678 - mse: 0.0865 Epoch 33/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2842 - accuracy: 0.8678 - mse: 0.0864 Epoch 34/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2841 - accuracy: 0.8678 - mse: 0.0864 Epoch 35/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2837 - accuracy: 0.8678 - mse: 0.0863 Epoch 36/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2834 - accuracy: 0.8678 - mse: 0.0862 Epoch 37/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2832 - accuracy: 0.8678 - mse: 0.0861 Epoch 38/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2832 - accuracy: 0.8678 - mse: 0.0861 Epoch 39/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2829 - accuracy: 0.8678 - mse: 0.0859 Epoch 40/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2826 - accuracy: 0.8678 - mse: 0.0859 Epoch 41/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2825 - accuracy: 0.8678 - mse: 0.0858 Epoch 42/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2822 - accuracy: 0.8678 - mse: 0.0857 Epoch 43/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2820 - accuracy: 0.8678 - mse: 0.0857 Epoch 44/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2816 - accuracy: 0.8678 - mse: 0.0855 Epoch 45/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2814 - accuracy: 0.8678 - mse: 0.0854 Epoch 46/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2813 - accuracy: 0.8678 - mse: 0.0854 Epoch 47/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2810 - accuracy: 0.8678 - mse: 0.0853 Epoch 48/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2808 - accuracy: 0.8678 - mse: 0.0853 Epoch 49/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2807 - accuracy: 0.8678 - mse: 0.0852 Epoch 50/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2802 - accuracy: 0.8678 - mse: 0.0851 Epoch 51/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2800 - accuracy: 0.8678 - mse: 0.0850 Epoch 52/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2798 - accuracy: 0.8678 - mse: 0.0849 Epoch 53/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2797 - accuracy: 0.8678 - mse: 0.0849 Epoch 54/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2793 - accuracy: 0.8678 - mse: 0.0848 Epoch 55/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2791 - accuracy: 0.8678 - mse: 0.0847 Epoch 56/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2790 - accuracy: 0.8678 - mse: 0.0846 Epoch 57/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2787 - accuracy: 0.8678 - mse: 0.0845 Epoch 58/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2784 - accuracy: 0.8678 - mse: 0.0844 Epoch 59/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2782 - accuracy: 0.8678 - mse: 0.0844 Epoch 60/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2781 - accuracy: 0.8678 - mse: 0.0844 Epoch 61/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2779 - accuracy: 0.8678 - mse: 0.0843 Epoch 62/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2776 - accuracy: 0.8678 - mse: 0.0842 Epoch 63/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2772 - accuracy: 0.8678 - mse: 0.0840 Epoch 64/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2771 - accuracy: 0.8678 - mse: 0.0840 Epoch 65/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2769 - accuracy: 0.8678 - mse: 0.0839 Epoch 66/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2767 - accuracy: 0.8678 - mse: 0.0839 Epoch 67/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2765 - accuracy: 0.8678 - mse: 0.0838 Epoch 68/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2762 - accuracy: 0.8678 - mse: 0.0837 Epoch 69/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2760 - accuracy: 0.8678 - mse: 0.0836 Epoch 70/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2758 - accuracy: 0.8678 - mse: 0.0836 Epoch 71/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2756 - accuracy: 0.8678 - mse: 0.0835 Epoch 72/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2753 - accuracy: 0.8678 - mse: 0.0834 Epoch 73/400
5/5 [==============================] - 0s 1ms/step - loss: 0.2752 - accuracy: 0.8678 - mse: 0.0834 Epoch 74/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2748 - accuracy: 0.8678 - mse: 0.0832 Epoch 75/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2745 - accuracy: 0.8678 - mse: 0.0831 Epoch 76/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2743 - accuracy: 0.8678 - mse: 0.0830 Epoch 77/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2741 - accuracy: 0.8678 - mse: 0.0829 Epoch 78/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2738 - accuracy: 0.8678 - mse: 0.0828 Epoch 79/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2736 - accuracy: 0.8678 - mse: 0.0827 Epoch 80/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2734 - accuracy: 0.8678 - mse: 0.0827 Epoch 81/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2731 - accuracy: 0.8678 - mse: 0.0826 Epoch 82/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2729 - accuracy: 0.8678 - mse: 0.0825 Epoch 83/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2727 - accuracy: 0.8719 - mse: 0.0825 Epoch 84/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2725 - accuracy: 0.8719 - mse: 0.0823 Epoch 85/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2723 - accuracy: 0.8719 - mse: 0.0823 Epoch 86/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2720 - accuracy: 0.8719 - mse: 0.0822 Epoch 87/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2719 - accuracy: 0.8719 - mse: 0.0822 Epoch 88/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2716 - accuracy: 0.8719 - mse: 0.0820 Epoch 89/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2713 - accuracy: 0.8719 - mse: 0.0819 Epoch 90/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2713 - accuracy: 0.8719 - mse: 0.0819 Epoch 91/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2709 - accuracy: 0.8719 - mse: 0.0818 Epoch 92/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2707 - accuracy: 0.8719 - mse: 0.0817 Epoch 93/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2705 - accuracy: 0.8719 - mse: 0.0817 Epoch 94/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2704 - accuracy: 0.8719 - mse: 0.0816 Epoch 95/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2702 - accuracy: 0.8719 - mse: 0.0816 Epoch 96/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2699 - accuracy: 0.8719 - mse: 0.0815 Epoch 97/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2698 - accuracy: 0.8719 - mse: 0.0814 Epoch 98/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2695 - accuracy: 0.8719 - mse: 0.0813 Epoch 99/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2693 - accuracy: 0.8719 - mse: 0.0812 Epoch 100/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2692 - accuracy: 0.8719 - mse: 0.0813 Epoch 101/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2690 - accuracy: 0.8719 - mse: 0.0811 Epoch 102/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2688 - accuracy: 0.8678 - mse: 0.0811 Epoch 103/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2685 - accuracy: 0.8719 - mse: 0.0810 Epoch 104/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2683 - accuracy: 0.8719 - mse: 0.0809 Epoch 105/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2682 - accuracy: 0.8719 - mse: 0.0809 Epoch 106/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2680 - accuracy: 0.8719 - mse: 0.0808 Epoch 107/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2677 - accuracy: 0.8719 - mse: 0.0808 Epoch 108/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2675 - accuracy: 0.8719 - mse: 0.0807 Epoch 109/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2673 - accuracy: 0.8719 - mse: 0.0806 Epoch 110/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2672 - accuracy: 0.8719 - mse: 0.0806 Epoch 111/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2670 - accuracy: 0.8719 - mse: 0.0805 Epoch 112/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2669 - accuracy: 0.8719 - mse: 0.0805 Epoch 113/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2665 - accuracy: 0.8719 - mse: 0.0803 Epoch 114/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2665 - accuracy: 0.8719 - mse: 0.0803 Epoch 115/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2661 - accuracy: 0.8719 - mse: 0.0802 Epoch 116/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2661 - accuracy: 0.8719 - mse: 0.0803 Epoch 117/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2658 - accuracy: 0.8719 - mse: 0.0802 Epoch 118/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2657 - accuracy: 0.8719 - mse: 0.0801 Epoch 119/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2654 - accuracy: 0.8719 - mse: 0.0800 Epoch 120/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2652 - accuracy: 0.8719 - mse: 0.0799 Epoch 121/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2651 - accuracy: 0.8678 - mse: 0.0799 Epoch 122/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2649 - accuracy: 0.8719 - mse: 0.0799 Epoch 123/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2647 - accuracy: 0.8678 - mse: 0.0798 Epoch 124/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2644 - accuracy: 0.8678 - mse: 0.0796 Epoch 125/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2642 - accuracy: 0.8719 - mse: 0.0796 Epoch 126/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2641 - accuracy: 0.8678 - mse: 0.0796 Epoch 127/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2638 - accuracy: 0.8678 - mse: 0.0795 Epoch 128/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2637 - accuracy: 0.8678 - mse: 0.0794 Epoch 129/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2635 - accuracy: 0.8678 - mse: 0.0794 Epoch 130/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2634 - accuracy: 0.8678 - mse: 0.0794 Epoch 131/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2632 - accuracy: 0.8678 - mse: 0.0793 Epoch 132/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2629 - accuracy: 0.8678 - mse: 0.0792 Epoch 133/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2626 - accuracy: 0.8678 - mse: 0.0791 Epoch 134/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2626 - accuracy: 0.8678 - mse: 0.0791 Epoch 135/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2623 - accuracy: 0.8678 - mse: 0.0790 Epoch 136/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2623 - accuracy: 0.8678 - mse: 0.0790 Epoch 137/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2620 - accuracy: 0.8678 - mse: 0.0789 Epoch 138/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2618 - accuracy: 0.8678 - mse: 0.0788 Epoch 139/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2616 - accuracy: 0.8678 - mse: 0.0787 Epoch 140/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2614 - accuracy: 0.8678 - mse: 0.0787 Epoch 141/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2613 - accuracy: 0.8678 - mse: 0.0786 Epoch 142/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2610 - accuracy: 0.8678 - mse: 0.0786 Epoch 143/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2608 - accuracy: 0.8719 - mse: 0.0785 Epoch 144/400
5/5 [==============================] - 0s 1000us/step - loss: 0.2606 - accuracy: 0.8719 - mse: 0.0784 Epoch 145/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2605 - accuracy: 0.8719 - mse: 0.0784 Epoch 146/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2603 - accuracy: 0.8719 - mse: 0.0783 Epoch 147/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2602 - accuracy: 0.8719 - mse: 0.0782 Epoch 148/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2599 - accuracy: 0.8719 - mse: 0.0782 Epoch 149/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2597 - accuracy: 0.8719 - mse: 0.0781 Epoch 150/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2597 - accuracy: 0.8719 - mse: 0.0781 Epoch 151/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2594 - accuracy: 0.8719 - mse: 0.0780 Epoch 152/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2591 - accuracy: 0.8719 - mse: 0.0779 Epoch 153/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2590 - accuracy: 0.8719 - mse: 0.0778 Epoch 154/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2589 - accuracy: 0.8719 - mse: 0.0778 Epoch 155/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2587 - accuracy: 0.8719 - mse: 0.0777 Epoch 156/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2585 - accuracy: 0.8719 - mse: 0.0777 Epoch 157/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2585 - accuracy: 0.8719 - mse: 0.0777 Epoch 158/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2581 - accuracy: 0.8719 - mse: 0.0776 Epoch 159/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2580 - accuracy: 0.8719 - mse: 0.0776 Epoch 160/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2579 - accuracy: 0.8719 - mse: 0.0775 Epoch 161/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2577 - accuracy: 0.8719 - mse: 0.0774 Epoch 162/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2574 - accuracy: 0.8719 - mse: 0.0773 Epoch 163/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2573 - accuracy: 0.8719 - mse: 0.0773 Epoch 164/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2572 - accuracy: 0.8719 - mse: 0.0772 Epoch 165/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2569 - accuracy: 0.8719 - mse: 0.0771 Epoch 166/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2567 - accuracy: 0.8719 - mse: 0.0770 Epoch 167/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2566 - accuracy: 0.8760 - mse: 0.0770 Epoch 168/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2564 - accuracy: 0.8760 - mse: 0.0770 Epoch 169/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2563 - accuracy: 0.8760 - mse: 0.0769 Epoch 170/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2560 - accuracy: 0.8760 - mse: 0.0769 Epoch 171/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2559 - accuracy: 0.8719 - mse: 0.0769 Epoch 172/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2557 - accuracy: 0.8760 - mse: 0.0767 Epoch 173/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2559 - accuracy: 0.8760 - mse: 0.0769 Epoch 174/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2554 - accuracy: 0.8719 - mse: 0.0767 Epoch 175/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2552 - accuracy: 0.8760 - mse: 0.0766 Epoch 176/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2550 - accuracy: 0.8760 - mse: 0.0765 Epoch 177/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2549 - accuracy: 0.8760 - mse: 0.0765 Epoch 178/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2548 - accuracy: 0.8760 - mse: 0.0764 Epoch 179/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2545 - accuracy: 0.8760 - mse: 0.0764 Epoch 180/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2544 - accuracy: 0.8760 - mse: 0.0763 Epoch 181/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2543 - accuracy: 0.8760 - mse: 0.0762 Epoch 182/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2540 - accuracy: 0.8760 - mse: 0.0762 Epoch 183/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2539 - accuracy: 0.8760 - mse: 0.0761 Epoch 184/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2538 - accuracy: 0.8760 - mse: 0.0760 Epoch 185/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2536 - accuracy: 0.8760 - mse: 0.0760 Epoch 186/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2534 - accuracy: 0.8760 - mse: 0.0760 Epoch 187/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2534 - accuracy: 0.8760 - mse: 0.0760 Epoch 188/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2531 - accuracy: 0.8802 - mse: 0.0759 Epoch 189/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2529 - accuracy: 0.8760 - mse: 0.0758 Epoch 190/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2527 - accuracy: 0.8802 - mse: 0.0758 Epoch 191/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2526 - accuracy: 0.8760 - mse: 0.0757 Epoch 192/400 5/5 [==============================] - 0s 999us/step - loss: 0.2524 - accuracy: 0.8760 - mse: 0.0756 Epoch 193/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2523 - accuracy: 0.8843 - mse: 0.0756 Epoch 194/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2521 - accuracy: 0.8760 - mse: 0.0755 Epoch 195/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2520 - accuracy: 0.8802 - mse: 0.0755 Epoch 196/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2517 - accuracy: 0.8843 - mse: 0.0754 Epoch 197/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2516 - accuracy: 0.8802 - mse: 0.0754 Epoch 198/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2516 - accuracy: 0.8760 - mse: 0.0754 Epoch 199/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2513 - accuracy: 0.8802 - mse: 0.0753 Epoch 200/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2512 - accuracy: 0.8802 - mse: 0.0752 Epoch 201/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2511 - accuracy: 0.8843 - mse: 0.0751 Epoch 202/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2509 - accuracy: 0.8802 - mse: 0.0751 Epoch 203/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2506 - accuracy: 0.8843 - mse: 0.0750 Epoch 204/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2505 - accuracy: 0.8802 - mse: 0.0750 Epoch 205/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2503 - accuracy: 0.8843 - mse: 0.0749 Epoch 206/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2501 - accuracy: 0.8843 - mse: 0.0749 Epoch 207/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2500 - accuracy: 0.8884 - mse: 0.0748 Epoch 208/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2498 - accuracy: 0.8884 - mse: 0.0748 Epoch 209/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2498 - accuracy: 0.8884 - mse: 0.0747 Epoch 210/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2496 - accuracy: 0.8884 - mse: 0.0747 Epoch 211/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2494 - accuracy: 0.8884 - mse: 0.0746 Epoch 212/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2493 - accuracy: 0.8926 - mse: 0.0746 Epoch 213/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2490 - accuracy: 0.8926 - mse: 0.0745 Epoch 214/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2490 - accuracy: 0.8884 - mse: 0.0745 Epoch 215/400
5/5 [==============================] - 0s 1ms/step - loss: 0.2487 - accuracy: 0.8926 - mse: 0.0744 Epoch 216/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2486 - accuracy: 0.8967 - mse: 0.0744 Epoch 217/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2484 - accuracy: 0.8967 - mse: 0.0743 Epoch 218/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2481 - accuracy: 0.8967 - mse: 0.0742 Epoch 219/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2480 - accuracy: 0.8926 - mse: 0.0741 Epoch 220/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2479 - accuracy: 0.8967 - mse: 0.0741 Epoch 221/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2477 - accuracy: 0.8967 - mse: 0.0740 Epoch 222/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2476 - accuracy: 0.8967 - mse: 0.0740 Epoch 223/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2475 - accuracy: 0.8967 - mse: 0.0740 Epoch 224/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2472 - accuracy: 0.8967 - mse: 0.0738 Epoch 225/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2471 - accuracy: 0.9008 - mse: 0.0739 Epoch 226/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2468 - accuracy: 0.8967 - mse: 0.0737 Epoch 227/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2468 - accuracy: 0.8967 - mse: 0.0737 Epoch 228/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2465 - accuracy: 0.9008 - mse: 0.0736 Epoch 229/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2465 - accuracy: 0.8967 - mse: 0.0736 Epoch 230/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2463 - accuracy: 0.8967 - mse: 0.0735 Epoch 231/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2460 - accuracy: 0.8967 - mse: 0.0734 Epoch 232/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2460 - accuracy: 0.9008 - mse: 0.0735 Epoch 233/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2458 - accuracy: 0.9008 - mse: 0.0734 Epoch 234/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2457 - accuracy: 0.8967 - mse: 0.0733 Epoch 235/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2453 - accuracy: 0.9008 - mse: 0.0732 Epoch 236/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2452 - accuracy: 0.9008 - mse: 0.0732 Epoch 237/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2451 - accuracy: 0.9008 - mse: 0.0731 Epoch 238/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2449 - accuracy: 0.9008 - mse: 0.0731 Epoch 239/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2448 - accuracy: 0.9008 - mse: 0.0730 Epoch 240/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2446 - accuracy: 0.9008 - mse: 0.0730 Epoch 241/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2445 - accuracy: 0.9008 - mse: 0.0729 Epoch 242/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2443 - accuracy: 0.9008 - mse: 0.0729 Epoch 243/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2441 - accuracy: 0.9008 - mse: 0.0728 Epoch 244/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2440 - accuracy: 0.9008 - mse: 0.0727 Epoch 245/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2439 - accuracy: 0.9008 - mse: 0.0727 Epoch 246/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2436 - accuracy: 0.9008 - mse: 0.0726 Epoch 247/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2435 - accuracy: 0.9008 - mse: 0.0726 Epoch 248/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2434 - accuracy: 0.9008 - mse: 0.0725 Epoch 249/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2432 - accuracy: 0.9008 - mse: 0.0725 Epoch 250/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2431 - accuracy: 0.9008 - mse: 0.0725 Epoch 251/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2430 - accuracy: 0.9008 - mse: 0.0724 Epoch 252/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2427 - accuracy: 0.9008 - mse: 0.0723 Epoch 253/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2425 - accuracy: 0.9008 - mse: 0.0722 Epoch 254/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2425 - accuracy: 0.9008 - mse: 0.0722 Epoch 255/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2422 - accuracy: 0.9008 - mse: 0.0721 Epoch 256/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2421 - accuracy: 0.9008 - mse: 0.0720 Epoch 257/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2419 - accuracy: 0.9008 - mse: 0.0720 Epoch 258/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2418 - accuracy: 0.9008 - mse: 0.0720 Epoch 259/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2415 - accuracy: 0.9008 - mse: 0.0719 Epoch 260/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2415 - accuracy: 0.9008 - mse: 0.0718 Epoch 261/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2414 - accuracy: 0.9008 - mse: 0.0718 Epoch 262/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2411 - accuracy: 0.9008 - mse: 0.0717 Epoch 263/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2410 - accuracy: 0.9008 - mse: 0.0717 Epoch 264/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2410 - accuracy: 0.9008 - mse: 0.0717 Epoch 265/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2407 - accuracy: 0.9008 - mse: 0.0716 Epoch 266/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2404 - accuracy: 0.9008 - mse: 0.0715 Epoch 267/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2402 - accuracy: 0.9008 - mse: 0.0714 Epoch 268/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2403 - accuracy: 0.9008 - mse: 0.0715 Epoch 269/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2402 - accuracy: 0.9008 - mse: 0.0714 Epoch 270/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2398 - accuracy: 0.9008 - mse: 0.0713 Epoch 271/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2396 - accuracy: 0.9008 - mse: 0.0712 Epoch 272/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2396 - accuracy: 0.9008 - mse: 0.0712 Epoch 273/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2393 - accuracy: 0.9008 - mse: 0.0711 Epoch 274/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2392 - accuracy: 0.9008 - mse: 0.0711 Epoch 275/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2391 - accuracy: 0.9008 - mse: 0.0710 Epoch 276/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2388 - accuracy: 0.9008 - mse: 0.0709 Epoch 277/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2387 - accuracy: 0.9008 - mse: 0.0709 Epoch 278/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2386 - accuracy: 0.9008 - mse: 0.0709 Epoch 279/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2384 - accuracy: 0.9008 - mse: 0.0708 Epoch 280/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2383 - accuracy: 0.9008 - mse: 0.0707 Epoch 281/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2381 - accuracy: 0.9008 - mse: 0.0707 Epoch 282/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2380 - accuracy: 0.9008 - mse: 0.0706 Epoch 283/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2378 - accuracy: 0.9008 - mse: 0.0706 Epoch 284/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2375 - accuracy: 0.9008 - mse: 0.0705 Epoch 285/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2373 - accuracy: 0.9008 - mse: 0.0704 Epoch 286/400
5/5 [==============================] - 0s 1000us/step - loss: 0.2373 - accuracy: 0.9008 - mse: 0.0704 Epoch 287/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2370 - accuracy: 0.9008 - mse: 0.0703 Epoch 288/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2370 - accuracy: 0.9008 - mse: 0.0703 Epoch 289/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2368 - accuracy: 0.9008 - mse: 0.0702 Epoch 290/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2366 - accuracy: 0.9008 - mse: 0.0701 Epoch 291/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2364 - accuracy: 0.9008 - mse: 0.0701 Epoch 292/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2361 - accuracy: 0.9008 - mse: 0.0700 Epoch 293/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2360 - accuracy: 0.9008 - mse: 0.0699 Epoch 294/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2359 - accuracy: 0.9008 - mse: 0.0699 Epoch 295/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2357 - accuracy: 0.9008 - mse: 0.0699 Epoch 296/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2355 - accuracy: 0.9008 - mse: 0.0698 Epoch 297/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2355 - accuracy: 0.9008 - mse: 0.0697 Epoch 298/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2352 - accuracy: 0.9008 - mse: 0.0697 Epoch 299/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2350 - accuracy: 0.9008 - mse: 0.0696 Epoch 300/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2349 - accuracy: 0.9008 - mse: 0.0696 Epoch 301/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2347 - accuracy: 0.9008 - mse: 0.0695 Epoch 302/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2345 - accuracy: 0.9008 - mse: 0.0694 Epoch 303/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2343 - accuracy: 0.9008 - mse: 0.0693 Epoch 304/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2343 - accuracy: 0.9008 - mse: 0.0693 Epoch 305/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2341 - accuracy: 0.9008 - mse: 0.0693 Epoch 306/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2340 - accuracy: 0.9008 - mse: 0.0692 Epoch 307/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2337 - accuracy: 0.9008 - mse: 0.0691 Epoch 308/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2335 - accuracy: 0.9008 - mse: 0.0691 Epoch 309/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2333 - accuracy: 0.9008 - mse: 0.0690 Epoch 310/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2332 - accuracy: 0.9008 - mse: 0.0690 Epoch 311/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2329 - accuracy: 0.9008 - mse: 0.0689 Epoch 312/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2330 - accuracy: 0.9008 - mse: 0.0689 Epoch 313/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2327 - accuracy: 0.9008 - mse: 0.0688 Epoch 314/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2326 - accuracy: 0.9008 - mse: 0.0687 Epoch 315/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2323 - accuracy: 0.9008 - mse: 0.0686 Epoch 316/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2322 - accuracy: 0.9008 - mse: 0.0686 Epoch 317/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2321 - accuracy: 0.9008 - mse: 0.0686 Epoch 318/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2319 - accuracy: 0.9008 - mse: 0.0685 Epoch 319/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2319 - accuracy: 0.9008 - mse: 0.0685 Epoch 320/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2317 - accuracy: 0.9008 - mse: 0.0684 Epoch 321/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2315 - accuracy: 0.9008 - mse: 0.0684 Epoch 322/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2313 - accuracy: 0.9008 - mse: 0.0683 Epoch 323/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2312 - accuracy: 0.9008 - mse: 0.0683 Epoch 324/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2311 - accuracy: 0.9008 - mse: 0.0682 Epoch 325/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2309 - accuracy: 0.9008 - mse: 0.0682 Epoch 326/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2307 - accuracy: 0.9008 - mse: 0.0681 Epoch 327/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2306 - accuracy: 0.9008 - mse: 0.0681 Epoch 328/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2304 - accuracy: 0.9008 - mse: 0.0680 Epoch 329/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2302 - accuracy: 0.9008 - mse: 0.0679 Epoch 330/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2300 - accuracy: 0.9008 - mse: 0.0678 Epoch 331/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2299 - accuracy: 0.9008 - mse: 0.0678 Epoch 332/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2296 - accuracy: 0.9008 - mse: 0.0677 Epoch 333/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2296 - accuracy: 0.9008 - mse: 0.0677 Epoch 334/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2295 - accuracy: 0.9050 - mse: 0.0676 Epoch 335/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2293 - accuracy: 0.9008 - mse: 0.0675 Epoch 336/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2290 - accuracy: 0.9008 - mse: 0.0674 Epoch 337/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2288 - accuracy: 0.9008 - mse: 0.0674 Epoch 338/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2286 - accuracy: 0.9050 - mse: 0.0673 Epoch 339/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2285 - accuracy: 0.9008 - mse: 0.0672 Epoch 340/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2283 - accuracy: 0.9008 - mse: 0.0672 Epoch 341/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2281 - accuracy: 0.9050 - mse: 0.0671 Epoch 342/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2279 - accuracy: 0.9050 - mse: 0.0670 Epoch 343/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2278 - accuracy: 0.9008 - mse: 0.0670 Epoch 344/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2275 - accuracy: 0.9050 - mse: 0.0669 Epoch 345/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2273 - accuracy: 0.9050 - mse: 0.0668 Epoch 346/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2274 - accuracy: 0.9050 - mse: 0.0668 Epoch 347/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2272 - accuracy: 0.9050 - mse: 0.0668 Epoch 348/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2268 - accuracy: 0.9050 - mse: 0.0666 Epoch 349/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2268 - accuracy: 0.9091 - mse: 0.0666 Epoch 350/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2265 - accuracy: 0.9091 - mse: 0.0665 Epoch 351/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2263 - accuracy: 0.9091 - mse: 0.0664 Epoch 352/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2262 - accuracy: 0.9091 - mse: 0.0664 Epoch 353/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2259 - accuracy: 0.9091 - mse: 0.0663 Epoch 354/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2257 - accuracy: 0.9091 - mse: 0.0662 Epoch 355/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2256 - accuracy: 0.9091 - mse: 0.0662 Epoch 356/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2254 - accuracy: 0.9091 - mse: 0.0661 Epoch 357/400
5/5 [==============================] - 0s 1000us/step - loss: 0.2253 - accuracy: 0.9091 - mse: 0.0661 Epoch 358/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2252 - accuracy: 0.9091 - mse: 0.0660 Epoch 359/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2248 - accuracy: 0.9091 - mse: 0.0659 Epoch 360/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2246 - accuracy: 0.9091 - mse: 0.0658 Epoch 361/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2245 - accuracy: 0.9091 - mse: 0.0657 Epoch 362/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2243 - accuracy: 0.9091 - mse: 0.0657 Epoch 363/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2242 - accuracy: 0.9091 - mse: 0.0657 Epoch 364/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2239 - accuracy: 0.9091 - mse: 0.0655 Epoch 365/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2237 - accuracy: 0.9091 - mse: 0.0654 Epoch 366/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2235 - accuracy: 0.9091 - mse: 0.0654 Epoch 367/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2234 - accuracy: 0.9091 - mse: 0.0654 Epoch 368/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2232 - accuracy: 0.9091 - mse: 0.0652 Epoch 369/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2230 - accuracy: 0.9091 - mse: 0.0652 Epoch 370/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2227 - accuracy: 0.9091 - mse: 0.0650 Epoch 371/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2227 - accuracy: 0.9091 - mse: 0.0650 Epoch 372/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2224 - accuracy: 0.9091 - mse: 0.0649 Epoch 373/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2222 - accuracy: 0.9091 - mse: 0.0649 Epoch 374/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2221 - accuracy: 0.9091 - mse: 0.0648 Epoch 375/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2221 - accuracy: 0.9091 - mse: 0.0648 Epoch 376/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2217 - accuracy: 0.9091 - mse: 0.0647 Epoch 377/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2216 - accuracy: 0.9091 - mse: 0.0646 Epoch 378/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2212 - accuracy: 0.9091 - mse: 0.0645 Epoch 379/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2211 - accuracy: 0.9091 - mse: 0.0644 Epoch 380/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2210 - accuracy: 0.9091 - mse: 0.0644 Epoch 381/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2209 - accuracy: 0.9091 - mse: 0.0644 Epoch 382/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2205 - accuracy: 0.9091 - mse: 0.0642 Epoch 383/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2204 - accuracy: 0.9091 - mse: 0.0641 Epoch 384/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2202 - accuracy: 0.9091 - mse: 0.0641 Epoch 385/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2202 - accuracy: 0.9091 - mse: 0.0641 Epoch 386/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2199 - accuracy: 0.9091 - mse: 0.0640 Epoch 387/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2196 - accuracy: 0.9091 - mse: 0.0639 Epoch 388/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2196 - accuracy: 0.9091 - mse: 0.0639 Epoch 389/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2193 - accuracy: 0.9091 - mse: 0.0638 Epoch 390/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2191 - accuracy: 0.9091 - mse: 0.0637 Epoch 391/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2189 - accuracy: 0.9091 - mse: 0.0636 Epoch 392/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2187 - accuracy: 0.9091 - mse: 0.0635 Epoch 393/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2186 - accuracy: 0.9091 - mse: 0.0636 Epoch 394/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2184 - accuracy: 0.9091 - mse: 0.0634 Epoch 395/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2181 - accuracy: 0.9091 - mse: 0.0633 Epoch 396/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2181 - accuracy: 0.9091 - mse: 0.0634 Epoch 397/400 5/5 [==============================] - 0s 1ms/step - loss: 0.2179 - accuracy: 0.9132 - mse: 0.0633 Epoch 398/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2176 - accuracy: 0.9132 - mse: 0.0632 Epoch 399/400 5/5 [==============================] - 0s 2ms/step - loss: 0.2174 - accuracy: 0.9132 - mse: 0.0631 Epoch 400/400 5/5 [==============================] - 0s 1000us/step - loss: 0.2173 - accuracy: 0.9132 - mse: 0.0630
from sklearn.metrics import mean_squared_error
RMSEresults = []
for model in models:
Ypred = model.predict(x_test);
RMSEresults.append(mean_squared_error(y_test, Ypred));
names = np.array(['SVC','rbfSVC','PolySVC','KNN','GaussNB','RF','DT','LDA', 'ANN1', 'ANN2']);
RMSE_scores = pd.DataFrame(np.vstack((names,RMSEresults))).T
RMSE_scores
0 | 1 | |
---|---|---|
0 | SVC | 0.11475409836065574 |
1 | rbfSVC | 0.11475409836065574 |
2 | PolySVC | 0.14754098360655737 |
3 | KNN | 0.16393442622950818 |
4 | GaussNB | 0.11475409836065574 |
5 | RF | 0.18032786885245902 |
6 | DT | 0.19672131147540983 |
7 | LDA | 0.13114754098360656 |
8 | ANN1 | 0.16017481457744337 |
9 | ANN2 | 0.12488600686802184 |
ax1 = sns.barplot(x=names, y=RMSEresults);
ax1.set(xlabel="Machine Learning Algorithm",
ylabel="Model RMSE (Lower is better)",
title="Model Performance: Root Mean Squared Error");
Cross Validation¶
This section borrows the methodology from Jason Brownlee at machinelearningmastery.com.
# import warnings
# #warnings.filterwarnings('ignore')
#
# # Number of tests to make.
# N=50;
#
# from sklearn import model_selection
# results = [];
# names = [];
# scoring = 'accuracy';
#
# with warnings.catch_warnings(): #Catch warnings in code section
# #warnings.simplefilter("ignore") # Suppress Warnings for LR [FIXED].
# for model in models:
# kfold = model_selection.KFold(n_splits=N);
# cv_results = model_selection.cross_val_score(model, x, y, cv=kfold, scoring=scoring);
# results.append(cv_results);
#
# #pd.DataFrame(results)
# names = np.array(['SVC','rbfSVC','PolySVC','KNN','GaussNB','RF','DT', 'LDA']);
#
# temp1=pd.DataFrame(results).T;
# temp1.columns = names;
#
# ax2 = sns.boxplot(data=temp1, palette='Spectral')
# ax2.set(xlabel = "ML Algorithm",
# ylabel = 'Accuracy',
# title = f"ML Algorithm Accuracy Comparison over {N} tests");
# sns.despine(ax=ax2,offset=5, trim=True)
#
# #pd.DataFrame(names).T
Confusion Matrices¶
from sklearn.metrics import ConfusionMatrixDisplay
from sklearn.metrics import confusion_matrix
matrices = [];
for model in models:
disp = ConfusionMatrixDisplay(confusion_matrix(y_test,model.predict(x_test)>0.5))
#disp.ax_.set_title(f"Conusion Matrix:")
matrices.append(disp)
num=0;
for m in matrices:
m.plot()
#print(names[num])
num=num+1
Model Optimization¶
Naive Bayes Optimization¶
This section borrows the methodology from this tutorial.
BUG: Must downgrade sklearn to version 0.23.2 for below code to work due to this bug.
# # Must downgrade SKlearn to v=0.23.2 for this code to work.
#
# from skopt import BayesSearchCV
# opt = BayesSearchCV(
# SVC(),
# {
# 'C': (1e-6, 1e+6, 'log-uniform'),
# 'gamma': (1e-6, 1e+1, 'log-uniform'),
# 'degree': (1, 8), # integer valued parameter
# 'kernel': ['linear', 'poly', 'rbf'], # categorical parameter
# },
# n_iter=15,
# cv=3
# );
#
# # callback handler
# def on_step(optim_result):
# score = opt.best_score_;
# print("best score: %s" % score)
# if score >= 0.81:
# print('Interrupting!')
# return True
#
# opt.fit(x_train, y_train, callback=on_step);
The optimized score, test score, and parameters are:
# print("val. score: %s" % opt.best_score_)
# print("test score: %s" % opt.score(x_test, y_test))
# print("best params: %s" % str(opt.best_params_))
# old_score = np.mean(pd.DataFrame(results).iloc[4,:]);
# print(f'The optimized vs unoptimized improvement is: {(opt.score(x_test, y_test)-old_score)*100/old_score} %')
Conclusions¶
Analysing model performance from RMSE values as well as the cross validation performed in sections 5.1 and 5.2 shows that the Linear Discriminant Analysis (LDA) is the best classifier of all those tested for this dataset.
The RMSE for the dataset is constantly among the lowest 3 of all models (with some run to run variation depending on test/train data split). The figure on section 5.2 clearly shows that 50% of the LDA models perform better than 75% of all other models. Similarly, 75% of the LDA models perform better than 50% of all other models, except for Gaussian Naive-Bayes and Decision Tree models.
Optimization of the SVC classifier using the skopt module showed that the optimal parameters for the Support Vector (Machine) Classifier are:
C = 7879.649123415433
degree = 1
gamma = 0.0035637719586721498
kernel = 'linear'
Performance of the optimized NB was around 1.79 Percent Better than the unoptimized model.
Overall, the recomended classifier based on the above analysis is: Linear Discriminant Analysis.