MoReLUDNN Regression#

Installation

# To install the required package, use the following command:
# !pip install modeva

Authentication

# To get authentication, use the following command: (To get full access please replace the token to your own token)
# from modeva.utils.authenticate import authenticate
# authenticate(auth_code='eaaa4301-b140-484c-8e93-f9f633c8bacb')

Import required modules

from modeva import DataSet
from modeva import TestSuite
from modeva.models import MoReLUDNNRegressor

Load and prepare dataset

ds = DataSet()
ds.load(name="BikeSharing")
ds.set_random_split()
ds.set_target("cnt")

ds.scale_numerical(features=("cnt",), method="log1p")
ds.scale_numerical(method="minmax")
ds.preprocess()

Train model#

model = MoReLUDNNRegressor(max_epochs=100, verbose=True)
model.fit(ds.train_x, ds.train_y)
#### MoReLUDNN Training ####
Epoch 0: Train loss 0.2111, Validation loss 0.0746
Epoch 1: Train loss 0.0530, Validation loss 0.0471
Epoch 2: Train loss 0.0414, Validation loss 0.0372
Epoch 3: Train loss 0.0343, Validation loss 0.0312
Epoch 4: Train loss 0.0300, Validation loss 0.0284
Epoch 5: Train loss 0.0278, Validation loss 0.0271
Epoch 6: Train loss 0.0268, Validation loss 0.0265
Epoch 7: Train loss 0.0263, Validation loss 0.0263
Epoch 8: Train loss 0.0261, Validation loss 0.0261
Epoch 9: Train loss 0.0258, Validation loss 0.0258
Epoch 10: Train loss 0.0255, Validation loss 0.0255
Epoch 11: Train loss 0.0252, Validation loss 0.0248
Epoch 12: Train loss 0.0244, Validation loss 0.0238
Epoch 13: Train loss 0.0233, Validation loss 0.0225
Epoch 14: Train loss 0.0221, Validation loss 0.0218
Epoch 15: Train loss 0.0211, Validation loss 0.0206
Epoch 16: Train loss 0.0201, Validation loss 0.0197
Epoch 17: Train loss 0.0194, Validation loss 0.0191
Epoch 18: Train loss 0.0189, Validation loss 0.0185
Epoch 19: Train loss 0.0184, Validation loss 0.0181
Epoch 20: Train loss 0.0180, Validation loss 0.0183
Epoch 21: Train loss 0.0177, Validation loss 0.0182
Epoch 22: Train loss 0.0175, Validation loss 0.0173
Epoch 23: Train loss 0.0172, Validation loss 0.0171
Epoch 24: Train loss 0.0170, Validation loss 0.0169
Epoch 25: Train loss 0.0168, Validation loss 0.0168
Epoch 26: Train loss 0.0165, Validation loss 0.0166
Epoch 27: Train loss 0.0166, Validation loss 0.0164
Epoch 28: Train loss 0.0163, Validation loss 0.0165
Epoch 29: Train loss 0.0161, Validation loss 0.0162
Epoch 30: Train loss 0.0160, Validation loss 0.0162
Epoch 31: Train loss 0.0158, Validation loss 0.0161
Epoch 32: Train loss 0.0157, Validation loss 0.0158
Epoch 33: Train loss 0.0155, Validation loss 0.0157
Epoch 34: Train loss 0.0154, Validation loss 0.0156
Epoch 35: Train loss 0.0152, Validation loss 0.0154
Epoch 36: Train loss 0.0150, Validation loss 0.0155
Epoch 37: Train loss 0.0150, Validation loss 0.0154
Epoch 38: Train loss 0.0148, Validation loss 0.0151
Epoch 39: Train loss 0.0146, Validation loss 0.0151
Epoch 40: Train loss 0.0143, Validation loss 0.0145
Epoch 41: Train loss 0.0140, Validation loss 0.0143
Epoch 42: Train loss 0.0137, Validation loss 0.0142
Epoch 43: Train loss 0.0134, Validation loss 0.0135
Epoch 44: Train loss 0.0128, Validation loss 0.0129
Epoch 45: Train loss 0.0124, Validation loss 0.0125
Epoch 46: Train loss 0.0120, Validation loss 0.0120
Epoch 47: Train loss 0.0115, Validation loss 0.0115
Epoch 48: Train loss 0.0110, Validation loss 0.0110
Epoch 49: Train loss 0.0105, Validation loss 0.0105
Epoch 50: Train loss 0.0100, Validation loss 0.0099
Epoch 51: Train loss 0.0094, Validation loss 0.0095
Epoch 52: Train loss 0.0090, Validation loss 0.0090
Epoch 53: Train loss 0.0085, Validation loss 0.0088
Epoch 54: Train loss 0.0080, Validation loss 0.0081
Epoch 55: Train loss 0.0076, Validation loss 0.0079
Epoch 56: Train loss 0.0072, Validation loss 0.0075
Epoch 57: Train loss 0.0069, Validation loss 0.0070
Epoch 58: Train loss 0.0066, Validation loss 0.0069
Epoch 59: Train loss 0.0063, Validation loss 0.0065
Epoch 60: Train loss 0.0060, Validation loss 0.0062
Epoch 61: Train loss 0.0059, Validation loss 0.0061
Epoch 62: Train loss 0.0057, Validation loss 0.0061
Epoch 63: Train loss 0.0056, Validation loss 0.0058
Epoch 64: Train loss 0.0054, Validation loss 0.0058
Epoch 65: Train loss 0.0053, Validation loss 0.0056
Epoch 66: Train loss 0.0053, Validation loss 0.0056
Epoch 67: Train loss 0.0052, Validation loss 0.0055
Epoch 68: Train loss 0.0051, Validation loss 0.0054
Epoch 69: Train loss 0.0051, Validation loss 0.0054
Epoch 70: Train loss 0.0050, Validation loss 0.0052
Epoch 71: Train loss 0.0049, Validation loss 0.0053
Epoch 72: Train loss 0.0049, Validation loss 0.0052
Epoch 73: Train loss 0.0048, Validation loss 0.0051
Epoch 74: Train loss 0.0047, Validation loss 0.0051
Epoch 75: Train loss 0.0047, Validation loss 0.0052
Epoch 76: Train loss 0.0047, Validation loss 0.0052
Epoch 77: Train loss 0.0047, Validation loss 0.0050
Epoch 78: Train loss 0.0046, Validation loss 0.0050
Epoch 79: Train loss 0.0047, Validation loss 0.0051
Epoch 80: Train loss 0.0046, Validation loss 0.0051
Epoch 81: Train loss 0.0046, Validation loss 0.0049
Epoch 82: Train loss 0.0045, Validation loss 0.0048
Epoch 83: Train loss 0.0045, Validation loss 0.0050
Epoch 84: Train loss 0.0045, Validation loss 0.0048
Epoch 85: Train loss 0.0045, Validation loss 0.0049
Epoch 86: Train loss 0.0044, Validation loss 0.0053
Epoch 87: Train loss 0.0047, Validation loss 0.0052
Epoch 88: Train loss 0.0045, Validation loss 0.0048
Epoch 89: Train loss 0.0045, Validation loss 0.0047
Epoch 90: Train loss 0.0043, Validation loss 0.0048
Epoch 91: Train loss 0.0045, Validation loss 0.0055
Epoch 92: Train loss 0.0044, Validation loss 0.0047
Epoch 93: Train loss 0.0042, Validation loss 0.0047
Epoch 94: Train loss 0.0042, Validation loss 0.0046
Epoch 95: Train loss 0.0042, Validation loss 0.0046
Epoch 96: Train loss 0.0041, Validation loss 0.0045
Epoch 97: Train loss 0.0041, Validation loss 0.0046
Epoch 98: Train loss 0.0041, Validation loss 0.0046
Epoch 99: Train loss 0.0041, Validation loss 0.0045
Training is terminated as max_epoch is reached.
MoReLUDNNRegressor(device='cpu', max_epochs=100, name='MoReLUDNNRegressor',
                   verbose=True)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.


Basic accuracy analysis#

ts = TestSuite(ds, model)
results = ts.diagnose_accuracy_table()
results.table

# Global feature importance
# ----------------------------------------------------------
results = ts.interpret_fi()
results.plot()


LLM summary table#

results = ts.interpret_llm_summary(dataset="train")
results.table
Count Response Mean Response Std Local MSE Global MSE
0 269.0 0.8577 0.0790 3.3054e-03 0.0633
1 201.0 0.7509 0.0989 1.7391e-03 0.4963
2 177.0 0.8294 0.0749 2.5354e-03 0.0633
3 161.0 0.7857 0.0772 3.3079e-03 0.0636
4 113.0 0.3766 0.1163 3.0773e-03 2.0247
... ... ... ... ... ...
4082 1.0 0.5198 NaN 5.8006e-03 1.3755
4083 1.0 0.5166 NaN 1.0704e-03 0.0769
4084 1.0 0.8524 NaN 3.7623e-05 0.0870
4085 1.0 0.6994 NaN 9.2278e-03 0.0771
4086 1.0 0.3872 NaN 4.4448e-03 0.9584

4087 rows × 5 columns



LLM parallel coordinate plot#

results = ts.interpret_llm_pc(dataset="train")
results.plot()


LLM profile plot against a feature#

results = ts.interpret_llm_profile(feature="hr", dataset="train")
results.plot()


Local feature importance analysis#

results = ts.interpret_local_linear_fi(dataset="train", sample_index=15, centered=True)
results.plot()


Extract the last hidden layer outputs#

model.predict_last_hidden_layer(ds.train_x)
array([[0.        , 0.1710586 , 0.        , ..., 0.18726286, 0.        ,
        0.        ],
       [0.        , 0.17478107, 0.        , ..., 0.13044491, 0.        ,
        0.        ],
       [0.        , 0.18033722, 0.        , ..., 0.07552771, 0.        ,
        0.        ],
       ...,
       [0.        , 0.3858271 , 0.        , ..., 0.        , 0.        ,
        0.6165768 ],
       [0.        , 0.39269155, 0.        , ..., 0.        , 0.        ,
        0.66937524],
       [0.        , 0.35866153, 0.        , ..., 0.        , 0.        ,
        0.7024171 ]], dtype=float32)

Total running time of the script: (0 minutes 25.380 seconds)

Gallery generated by Sphinx-Gallery