library(reticulate)
from  sklearn import datasets
import tensorflow as tf
from keras.models import Sequential
import pandas as pd
from keras.layers import Dense
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from keras.utils import np_utils
import time
import numpy as np

iris    = datasets.load_iris()
X       = iris.data
y       = iris.target
y_keras = np_utils.to_categorical(y)
time.sleep(7)
model = Sequential()
model.add(Dense(8, activation='relu', input_shape=(4,)))
model.add(Dense(8, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])

print(model.summary())
## Model: "sequential"
## _________________________________________________________________
## Layer (type)                 Output Shape              Param #   
## =================================================================
## dense (Dense)                (None, 8)                 40        
## _________________________________________________________________
## dense_1 (Dense)              (None, 8)                 72        
## _________________________________________________________________
## dense_2 (Dense)              (None, 3)                 27        
## =================================================================
## Total params: 139
## Trainable params: 139
## Non-trainable params: 0
## _________________________________________________________________
## None
model.fit(X, y_keras ,epochs=20, batch_size=1, verbose=1)
## Epoch 1/20
## 
##   1/150 [..............................] - ETA: 1:37 - loss: 1.3329 - accuracy: 0.0000e+00
##  32/150 [=====>........................] - ETA: 0s - loss: 1.4581 - accuracy: 0.2935      
##  65/150 [============>.................] - ETA: 0s - loss: 1.3224 - accuracy: 0.3561
##  98/150 [==================>...........] - ETA: 0s - loss: 1.2362 - accuracy: 0.4015
## 131/150 [=========================>....] - ETA: 0s - loss: 1.1700 - accuracy: 0.4349
## 150/150 [==============================] - 1s 2ms/step - loss: 1.1350 - accuracy: 0.4519
## Epoch 2/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.8231 - accuracy: 0.0000e+00
##  33/150 [=====>........................] - ETA: 0s - loss: 0.5649 - accuracy: 0.6230    
##  66/150 [============>.................] - ETA: 0s - loss: 0.5831 - accuracy: 0.6229
##  99/150 [==================>...........] - ETA: 0s - loss: 0.5747 - accuracy: 0.6324
## 131/150 [=========================>....] - ETA: 0s - loss: 0.5619 - accuracy: 0.6422
## 150/150 [==============================] - 0s 2ms/step - loss: 0.5575 - accuracy: 0.6452
## Epoch 3/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.8046 - accuracy: 0.0000e+00
##  33/150 [=====>........................] - ETA: 0s - loss: 0.4843 - accuracy: 0.7162    
##  62/150 [===========>..................] - ETA: 0s - loss: 0.4786 - accuracy: 0.7248
##  95/150 [==================>...........] - ETA: 0s - loss: 0.4756 - accuracy: 0.7248
## 128/150 [========================>.....] - ETA: 0s - loss: 0.4727 - accuracy: 0.7290
## 150/150 [==============================] - 0s 2ms/step - loss: 0.4707 - accuracy: 0.7318
## Epoch 4/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.0255 - accuracy: 1.0000
##  29/150 [====>.........................] - ETA: 0s - loss: 0.4561 - accuracy: 0.7788
##  61/150 [===========>..................] - ETA: 0s - loss: 0.4580 - accuracy: 0.7538
##  95/150 [==================>...........] - ETA: 0s - loss: 0.4387 - accuracy: 0.7553
## 128/150 [========================>.....] - ETA: 0s - loss: 0.4300 - accuracy: 0.7625
## 150/150 [==============================] - 0s 2ms/step - loss: 0.4253 - accuracy: 0.7681
## Epoch 5/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.0621 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.3496 - accuracy: 0.7257
##  67/150 [============>.................] - ETA: 0s - loss: 0.3676 - accuracy: 0.7606
## 100/150 [===================>..........] - ETA: 0s - loss: 0.3732 - accuracy: 0.7773
## 133/150 [=========================>....] - ETA: 0s - loss: 0.3743 - accuracy: 0.7842
## 150/150 [==============================] - 0s 2ms/step - loss: 0.3739 - accuracy: 0.7874
## Epoch 6/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.3455 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.4388 - accuracy: 0.8231
##  66/150 [============>.................] - ETA: 0s - loss: 0.3991 - accuracy: 0.8441
##  99/150 [==================>...........] - ETA: 0s - loss: 0.3775 - accuracy: 0.8487
## 132/150 [=========================>....] - ETA: 0s - loss: 0.3665 - accuracy: 0.8490
## 150/150 [==============================] - 0s 2ms/step - loss: 0.3636 - accuracy: 0.8470
## Epoch 7/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.0111 - accuracy: 1.0000
##  33/150 [=====>........................] - ETA: 0s - loss: 0.3463 - accuracy: 0.7884
##  66/150 [============>.................] - ETA: 0s - loss: 0.3389 - accuracy: 0.8231
##  99/150 [==================>...........] - ETA: 0s - loss: 0.3440 - accuracy: 0.8221
## 131/150 [=========================>....] - ETA: 0s - loss: 0.3415 - accuracy: 0.8283
## 150/150 [==============================] - 0s 2ms/step - loss: 0.3380 - accuracy: 0.8324
## Epoch 8/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.0142 - accuracy: 1.0000
##  35/150 [======>.......................] - ETA: 0s - loss: 0.1909 - accuracy: 0.9770
##  67/150 [============>.................] - ETA: 0s - loss: 0.2297 - accuracy: 0.9275
## 100/150 [===================>..........] - ETA: 0s - loss: 0.2314 - accuracy: 0.9184
## 133/150 [=========================>....] - ETA: 0s - loss: 0.2310 - accuracy: 0.9130
## 150/150 [==============================] - 0s 2ms/step - loss: 0.2325 - accuracy: 0.9106
## Epoch 9/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.0110 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.3056 - accuracy: 0.8165
##  66/150 [============>.................] - ETA: 0s - loss: 0.2778 - accuracy: 0.8441
## 100/150 [===================>..........] - ETA: 0s - loss: 0.2565 - accuracy: 0.8630
## 133/150 [=========================>....] - ETA: 0s - loss: 0.2463 - accuracy: 0.8715
## 150/150 [==============================] - 0s 2ms/step - loss: 0.2462 - accuracy: 0.8725
## Epoch 10/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.0057 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.1939 - accuracy: 0.8627
##  67/150 [============>.................] - ETA: 0s - loss: 0.2264 - accuracy: 0.8578
## 100/150 [===================>..........] - ETA: 0s - loss: 0.2266 - accuracy: 0.8669
## 133/150 [=========================>....] - ETA: 0s - loss: 0.2248 - accuracy: 0.8735
## 150/150 [==============================] - 0s 2ms/step - loss: 0.2222 - accuracy: 0.8777
## Epoch 11/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 1.1012 - accuracy: 0.0000e+00
##  34/150 [=====>........................] - ETA: 0s - loss: 0.3099 - accuracy: 0.8215    
##  66/150 [============>.................] - ETA: 0s - loss: 0.2841 - accuracy: 0.8519
## 100/150 [===================>..........] - ETA: 0s - loss: 0.2777 - accuracy: 0.8581
## 134/150 [=========================>....] - ETA: 0s - loss: 0.2820 - accuracy: 0.8549
## 150/150 [==============================] - 0s 2ms/step - loss: 0.2810 - accuracy: 0.8554
## Epoch 12/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.0106 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.1991 - accuracy: 0.8772
##  67/150 [============>.................] - ETA: 0s - loss: 0.1970 - accuracy: 0.8910
## 101/150 [===================>..........] - ETA: 0s - loss: 0.1898 - accuracy: 0.9032
## 135/150 [==========================>...] - ETA: 0s - loss: 0.1869 - accuracy: 0.9070
## 150/150 [==============================] - 0s 2ms/step - loss: 0.1857 - accuracy: 0.9078
## Epoch 13/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.0339 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.2842 - accuracy: 0.8975
##  67/150 [============>.................] - ETA: 0s - loss: 0.2375 - accuracy: 0.9130
## 100/150 [===================>..........] - ETA: 0s - loss: 0.2367 - accuracy: 0.9088
## 134/150 [=========================>....] - ETA: 0s - loss: 0.2301 - accuracy: 0.9086
## 150/150 [==============================] - 0s 2ms/step - loss: 0.2284 - accuracy: 0.9082
## Epoch 14/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.0135 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.0460 - accuracy: 1.0000
##  67/150 [============>.................] - ETA: 0s - loss: 0.0944 - accuracy: 0.9734
## 101/150 [===================>..........] - ETA: 0s - loss: 0.1278 - accuracy: 0.9550
## 134/150 [=========================>....] - ETA: 0s - loss: 0.1417 - accuracy: 0.9490
## 150/150 [==============================] - 0s 2ms/step - loss: 0.1465 - accuracy: 0.9471
## Epoch 15/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.6847 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.5445 - accuracy: 0.8246
##  66/150 [============>.................] - ETA: 0s - loss: 0.3872 - accuracy: 0.8711
##  99/150 [==================>...........] - ETA: 0s - loss: 0.3163 - accuracy: 0.8931
## 132/150 [=========================>....] - ETA: 0s - loss: 0.2783 - accuracy: 0.9025
## 150/150 [==============================] - 0s 2ms/step - loss: 0.2652 - accuracy: 0.9058
## Epoch 16/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 9.9919e-04 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.2480 - accuracy: 0.8671    
##  67/150 [============>.................] - ETA: 0s - loss: 0.1940 - accuracy: 0.9121
## 100/150 [===================>..........] - ETA: 0s - loss: 0.1797 - accuracy: 0.9254
## 133/150 [=========================>....] - ETA: 0s - loss: 0.1870 - accuracy: 0.9234
## 150/150 [==============================] - 0s 2ms/step - loss: 0.1926 - accuracy: 0.9217
## Epoch 17/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.1819 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.1321 - accuracy: 0.9303
##  67/150 [============>.................] - ETA: 0s - loss: 0.1352 - accuracy: 0.9211
## 100/150 [===================>..........] - ETA: 0s - loss: 0.1310 - accuracy: 0.9268
## 133/150 [=========================>....] - ETA: 0s - loss: 0.1369 - accuracy: 0.9282
## 150/150 [==============================] - 0s 2ms/step - loss: 0.1429 - accuracy: 0.9271
## Epoch 18/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.0218 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.2199 - accuracy: 0.9230
##  67/150 [============>.................] - ETA: 0s - loss: 0.1955 - accuracy: 0.9234
## 100/150 [===================>..........] - ETA: 0s - loss: 0.1898 - accuracy: 0.9183
## 133/150 [=========================>....] - ETA: 0s - loss: 0.1848 - accuracy: 0.9184
## 150/150 [==============================] - 0s 2ms/step - loss: 0.1814 - accuracy: 0.9197
## Epoch 19/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.0020 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.0783 - accuracy: 0.9798
##  67/150 [============>.................] - ETA: 0s - loss: 0.1015 - accuracy: 0.9697
## 100/150 [===================>..........] - ETA: 0s - loss: 0.1151 - accuracy: 0.9640
## 133/150 [=========================>....] - ETA: 0s - loss: 0.1247 - accuracy: 0.9580
## 150/150 [==============================] - 0s 2ms/step - loss: 0.1318 - accuracy: 0.9552
## Epoch 20/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.0011 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.1629 - accuracy: 0.9402
##  67/150 [============>.................] - ETA: 0s - loss: 0.1607 - accuracy: 0.9488
##  99/150 [==================>...........] - ETA: 0s - loss: 0.1694 - accuracy: 0.9478
## 130/150 [=========================>....] - ETA: 0s - loss: 0.1769 - accuracy: 0.9439
## 150/150 [==============================] - 0s 2ms/step - loss: 0.1793 - accuracy: 0.9414
## <tensorflow.python.keras.callbacks.History object at 0x00000000286FCB80>
print("Deep Learning model accuracy -> "  + str(accuracy_score(y , model.predict_classes(X))))
## Deep Learning model accuracy -> 0.92
## 
## D:\PYTHON~3\lib\site-packages\tensorflow\python\keras\engine\sequential.py:450: UserWarning: `model.predict_classes()` is deprecated and will be removed after 2021-01-01. Please use instead:* `np.argmax(model.predict(x), axis=-1)`,   if your model does multi-class classification   (e.g. if it uses a `softmax` last-layer activation).* `(model.predict(x) > 0.5).astype("int32")`,   if your model does binary classification   (e.g. if it uses a `sigmoid` last-layer activation).
##   warnings.warn('`model.predict_classes()` is deprecated and '
model = Sequential()
model.add(Dense(8, activation='sigmoid', input_shape=(4,)))
model.add(Dense(8, activation='sigmoid'))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])

print(model.summary())
## Model: "sequential_1"
## _________________________________________________________________
## Layer (type)                 Output Shape              Param #   
## =================================================================
## dense_3 (Dense)              (None, 8)                 40        
## _________________________________________________________________
## dense_4 (Dense)              (None, 8)                 72        
## _________________________________________________________________
## dense_5 (Dense)              (None, 3)                 27        
## =================================================================
## Total params: 139
## Trainable params: 139
## Non-trainable params: 0
## _________________________________________________________________
## None
model.fit(X, y_keras ,epochs=20, batch_size=1, verbose=1)
## Epoch 1/20
## 
##   1/150 [..............................] - ETA: 1:28 - loss: 1.4179 - accuracy: 0.0000e+00
##  44/150 [=======>......................] - ETA: 0s - loss: 1.1360 - accuracy: 0.3585      
##  85/150 [================>.............] - ETA: 0s - loss: 1.1232 - accuracy: 0.3698
## 121/150 [=======================>......] - ETA: 0s - loss: 1.1195 - accuracy: 0.3677
## 150/150 [==============================] - 1s 1ms/step - loss: 1.1178 - accuracy: 0.3615
## Epoch 2/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 1.0921 - accuracy: 0.0000e+00
##  31/150 [=====>........................] - ETA: 0s - loss: 1.0925 - accuracy: 0.4955    
##  62/150 [===========>..................] - ETA: 0s - loss: 1.0926 - accuracy: 0.4882
##  92/150 [=================>............] - ETA: 0s - loss: 1.0927 - accuracy: 0.4785
## 123/150 [=======================>......] - ETA: 0s - loss: 1.0927 - accuracy: 0.4674
## 150/150 [==============================] - 0s 2ms/step - loss: 1.0926 - accuracy: 0.4572
## Epoch 3/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 1.1192 - accuracy: 0.0000e+00
##  33/150 [=====>........................] - ETA: 0s - loss: 1.0920 - accuracy: 0.3762    
##  65/150 [============>.................] - ETA: 0s - loss: 1.0877 - accuracy: 0.3969
##  97/150 [==================>...........] - ETA: 0s - loss: 1.0868 - accuracy: 0.3909
## 129/150 [========================>.....] - ETA: 0s - loss: 1.0860 - accuracy: 0.3873
## 150/150 [==============================] - 0s 2ms/step - loss: 1.0856 - accuracy: 0.3877
## Epoch 4/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 1.1137 - accuracy: 0.0000e+00
##  32/150 [=====>........................] - ETA: 0s - loss: 1.0640 - accuracy: 0.4593    
##  64/150 [===========>..................] - ETA: 0s - loss: 1.0611 - accuracy: 0.4799
##  97/150 [==================>...........] - ETA: 0s - loss: 1.0619 - accuracy: 0.4916
## 128/150 [========================>.....] - ETA: 0s - loss: 1.0634 - accuracy: 0.4964
## 150/150 [==============================] - 0s 2ms/step - loss: 1.0642 - accuracy: 0.5008
## Epoch 5/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.9939 - accuracy: 1.0000
##  31/150 [=====>........................] - ETA: 0s - loss: 1.0796 - accuracy: 0.3263
##  63/150 [===========>..................] - ETA: 0s - loss: 1.0743 - accuracy: 0.3905
##  94/150 [=================>............] - ETA: 0s - loss: 1.0723 - accuracy: 0.4222
## 126/150 [========================>.....] - ETA: 0s - loss: 1.0706 - accuracy: 0.4314
## 150/150 [==============================] - 0s 2ms/step - loss: 1.0694 - accuracy: 0.4402
## Epoch 6/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 1.0555 - accuracy: 1.0000
##  33/150 [=====>........................] - ETA: 0s - loss: 1.0629 - accuracy: 0.5933
##  65/150 [============>.................] - ETA: 0s - loss: 1.0602 - accuracy: 0.6012
##  95/150 [==================>...........] - ETA: 0s - loss: 1.0577 - accuracy: 0.6018
## 125/150 [========================>.....] - ETA: 0s - loss: 1.0549 - accuracy: 0.5946
## 150/150 [==============================] - 0s 2ms/step - loss: 1.0539 - accuracy: 0.5841
## Epoch 7/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 1.0448 - accuracy: 1.0000
##  32/150 [=====>........................] - ETA: 0s - loss: 1.0409 - accuracy: 0.6919
##  63/150 [===========>..................] - ETA: 0s - loss: 1.0384 - accuracy: 0.6573
##  93/150 [=================>............] - ETA: 0s - loss: 1.0362 - accuracy: 0.6576
## 124/150 [=======================>......] - ETA: 0s - loss: 1.0337 - accuracy: 0.6568
## 150/150 [==============================] - 0s 2ms/step - loss: 1.0326 - accuracy: 0.6475
## Epoch 8/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.9374 - accuracy: 1.0000
##  32/150 [=====>........................] - ETA: 0s - loss: 0.9744 - accuracy: 0.7460
##  64/150 [===========>..................] - ETA: 0s - loss: 0.9924 - accuracy: 0.6696
##  97/150 [==================>...........] - ETA: 0s - loss: 0.9992 - accuracy: 0.6448
## 130/150 [=========================>....] - ETA: 0s - loss: 1.0019 - accuracy: 0.6375
## 150/150 [==============================] - 0s 2ms/step - loss: 1.0027 - accuracy: 0.6359
## Epoch 9/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.9493 - accuracy: 1.0000
##  33/150 [=====>........................] - ETA: 0s - loss: 0.9862 - accuracy: 0.6964
##  64/150 [===========>..................] - ETA: 0s - loss: 0.9876 - accuracy: 0.6927
##  95/150 [==================>...........] - ETA: 0s - loss: 0.9848 - accuracy: 0.7009
## 128/150 [========================>.....] - ETA: 0s - loss: 0.9830 - accuracy: 0.7025
## 150/150 [==============================] - 0s 2ms/step - loss: 0.9828 - accuracy: 0.6992
## Epoch 10/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 1.0094 - accuracy: 1.0000
##  34/150 [=====>........................] - ETA: 0s - loss: 0.9568 - accuracy: 0.6676
##  66/150 [============>.................] - ETA: 0s - loss: 0.9542 - accuracy: 0.6681
##  97/150 [==================>...........] - ETA: 0s - loss: 0.9534 - accuracy: 0.6725
## 129/150 [========================>.....] - ETA: 0s - loss: 0.9521 - accuracy: 0.6781
## 150/150 [==============================] - 0s 2ms/step - loss: 0.9516 - accuracy: 0.6808
## Epoch 11/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.9306 - accuracy: 1.0000
##  32/150 [=====>........................] - ETA: 0s - loss: 0.9137 - accuracy: 0.8725
##  63/150 [===========>..................] - ETA: 0s - loss: 0.9189 - accuracy: 0.8087
##  94/150 [=================>............] - ETA: 0s - loss: 0.9209 - accuracy: 0.7741
## 126/150 [========================>.....] - ETA: 0s - loss: 0.9210 - accuracy: 0.7524
## 150/150 [==============================] - 0s 2ms/step - loss: 0.9205 - accuracy: 0.7424
## Epoch 12/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.7071 - accuracy: 1.0000
##  32/150 [=====>........................] - ETA: 0s - loss: 0.8453 - accuracy: 0.7655
##  64/150 [===========>..................] - ETA: 0s - loss: 0.8610 - accuracy: 0.7547
##  92/150 [=================>............] - ETA: 0s - loss: 0.8687 - accuracy: 0.7510
## 122/150 [=======================>......] - ETA: 0s - loss: 0.8723 - accuracy: 0.7511
## 150/150 [==============================] - 0s 2ms/step - loss: 0.8739 - accuracy: 0.7502
## Epoch 13/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 1.0371 - accuracy: 0.0000e+00
##  30/150 [=====>........................] - ETA: 0s - loss: 0.8599 - accuracy: 0.6535    
##  63/150 [===========>..................] - ETA: 0s - loss: 0.8745 - accuracy: 0.6508
##  96/150 [==================>...........] - ETA: 0s - loss: 0.8717 - accuracy: 0.6659
## 128/150 [========================>.....] - ETA: 0s - loss: 0.8667 - accuracy: 0.6735
## 150/150 [==============================] - 0s 2ms/step - loss: 0.8632 - accuracy: 0.6764
## Epoch 14/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.5078 - accuracy: 1.0000
##  33/150 [=====>........................] - ETA: 0s - loss: 0.8111 - accuracy: 0.6624
##  65/150 [============>.................] - ETA: 0s - loss: 0.8092 - accuracy: 0.6737
##  95/150 [==================>...........] - ETA: 0s - loss: 0.8029 - accuracy: 0.6947
## 126/150 [========================>.....] - ETA: 0s - loss: 0.7996 - accuracy: 0.7097
## 150/150 [==============================] - 0s 2ms/step - loss: 0.7985 - accuracy: 0.7172
## Epoch 15/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.5000 - accuracy: 1.0000
##  26/150 [====>.........................] - ETA: 0s - loss: 0.6809 - accuracy: 0.8221
##  52/150 [=========>....................] - ETA: 0s - loss: 0.6958 - accuracy: 0.7909
##  78/150 [==============>...............] - ETA: 0s - loss: 0.7133 - accuracy: 0.7671
## 104/150 [===================>..........] - ETA: 0s - loss: 0.7220 - accuracy: 0.7555
## 130/150 [=========================>....] - ETA: 0s - loss: 0.7296 - accuracy: 0.7401
## 150/150 [==============================] - 0s 2ms/step - loss: 0.7336 - accuracy: 0.7318
## Epoch 16/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.9862 - accuracy: 1.0000
##  26/150 [====>.........................] - ETA: 0s - loss: 0.7976 - accuracy: 0.8855
##  53/150 [=========>....................] - ETA: 0s - loss: 0.7814 - accuracy: 0.8505
##  79/150 [==============>...............] - ETA: 0s - loss: 0.7666 - accuracy: 0.8359
## 105/150 [====================>.........] - ETA: 0s - loss: 0.7552 - accuracy: 0.8267
## 131/150 [=========================>....] - ETA: 0s - loss: 0.7493 - accuracy: 0.8156
## 150/150 [==============================] - 0s 2ms/step - loss: 0.7456 - accuracy: 0.8087
## Epoch 17/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.9911 - accuracy: 0.0000e+00
##  26/150 [====>.........................] - ETA: 0s - loss: 0.7289 - accuracy: 0.6637    
##  51/150 [=========>....................] - ETA: 0s - loss: 0.7083 - accuracy: 0.7048
##  76/150 [==============>...............] - ETA: 0s - loss: 0.6988 - accuracy: 0.7352
## 102/150 [===================>..........] - ETA: 0s - loss: 0.6904 - accuracy: 0.7516
## 128/150 [========================>.....] - ETA: 0s - loss: 0.6875 - accuracy: 0.7537
## 150/150 [==============================] - 0s 2ms/step - loss: 0.6859 - accuracy: 0.7551
## Epoch 18/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.9517 - accuracy: 0.0000e+00
##  26/150 [====>.........................] - ETA: 0s - loss: 0.6942 - accuracy: 0.6709    
##  52/150 [=========>....................] - ETA: 0s - loss: 0.6808 - accuracy: 0.6803
##  78/150 [==============>...............] - ETA: 0s - loss: 0.6735 - accuracy: 0.6787
## 101/150 [===================>..........] - ETA: 0s - loss: 0.6713 - accuracy: 0.6879
## 124/150 [=======================>......] - ETA: 0s - loss: 0.6696 - accuracy: 0.6977
## 147/150 [============================>.] - ETA: 0s - loss: 0.6670 - accuracy: 0.7066
## 150/150 [==============================] - 0s 2ms/step - loss: 0.6665 - accuracy: 0.7077
## Epoch 19/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.3038 - accuracy: 1.0000
##  26/150 [====>.........................] - ETA: 0s - loss: 0.5624 - accuracy: 0.8018
##  51/150 [=========>....................] - ETA: 0s - loss: 0.5752 - accuracy: 0.7716
##  76/150 [==============>...............] - ETA: 0s - loss: 0.5896 - accuracy: 0.7428
## 101/150 [===================>..........] - ETA: 0s - loss: 0.5956 - accuracy: 0.7301
## 127/150 [========================>.....] - ETA: 0s - loss: 0.5965 - accuracy: 0.7323
## 150/150 [==============================] - 0s 2ms/step - loss: 0.5992 - accuracy: 0.7378
## Epoch 20/20
## 
##   1/150 [..............................] - ETA: 0s - loss: 0.6909 - accuracy: 1.0000
##  26/150 [====>.........................] - ETA: 0s - loss: 0.6811 - accuracy: 0.6619
##  51/150 [=========>....................] - ETA: 0s - loss: 0.6565 - accuracy: 0.7032
##  76/150 [==============>...............] - ETA: 0s - loss: 0.6359 - accuracy: 0.7204
## 102/150 [===================>..........] - ETA: 0s - loss: 0.6247 - accuracy: 0.7314
## 127/150 [========================>.....] - ETA: 0s - loss: 0.6189 - accuracy: 0.7413
## 150/150 [==============================] - 0s 2ms/step - loss: 0.6149 - accuracy: 0.7496
## <tensorflow.python.keras.callbacks.History object at 0x000000005F7AFA30>
print("Deep Learning model accuracy -> "  + str(accuracy_score(y , model.predict_classes(X))))
## Deep Learning model accuracy -> 0.68
## 
## D:\PYTHON~3\lib\site-packages\tensorflow\python\keras\engine\sequential.py:450: UserWarning: `model.predict_classes()` is deprecated and will be removed after 2021-01-01. Please use instead:* `np.argmax(model.predict(x), axis=-1)`,   if your model does multi-class classification   (e.g. if it uses a `softmax` last-layer activation).* `(model.predict(x) > 0.5).astype("int32")`,   if your model does binary classification   (e.g. if it uses a `sigmoid` last-layer activation).
##   warnings.warn('`model.predict_classes()` is deprecated and '
from sklearn.datasets import make_classification
from sklearn.ensemble import ExtraTreesClassifier
import matplotlib.pyplot as plt

forest = ExtraTreesClassifier(n_estimators=250,
                              random_state=0)

forest.fit(X, y)
## ExtraTreesClassifier(n_estimators=250, random_state=0)
importances = forest.feature_importances_
std = np.std([tree.feature_importances_ for tree in forest.estimators_],
             axis=0)
indices = np.argsort(importances)[::-1]

# Print the feature ranking
print("Feature ranking:")
## Feature ranking:
for f in range(X.shape[1]):
    print("%d. feature %d (%f)" % (f + 1, indices[f], importances[indices[f]]))

# Plot the impurity-based feature importances of the forest
## 1. feature 3 (0.436344)
## 2. feature 2 (0.408365)
## 3. feature 0 (0.090054)
## 4. feature 1 (0.065237)
plt.figure()
plt.title("Feature importances")
## Text(0.5, 1.0, 'Feature importances')
plt.bar(range(X.shape[1]), importances[indices],
        color="r", yerr=std[indices], align="center")
## <BarContainer object of 4 artists>
plt.xticks(range(X.shape[1]), indices)
## ([<matplotlib.axis.XTick object at 0x0000000060D89D00>, <matplotlib.axis.XTick object at 0x0000000060D89CD0>, <matplotlib.axis.XTick object at 0x0000000060CDB850>, <matplotlib.axis.XTick object at 0x0000000060DC6700>], [Text(0, 0, '3'), Text(1, 0, '2'), Text(2, 0, '0'), Text(3, 0, '1')])
plt.xlim([-1, X.shape[1]])
## (-1.0, 4.0)
plt.show()