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.0257
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.0239
Epoch 13: Train loss 0.0234, Validation loss 0.0226
Epoch 14: Train loss 0.0221, Validation loss 0.0219
Epoch 15: Train loss 0.0212, Validation loss 0.0206
Epoch 16: Train loss 0.0202, Validation loss 0.0198
Epoch 17: Train loss 0.0195, Validation loss 0.0192
Epoch 18: Train loss 0.0190, Validation loss 0.0186
Epoch 19: Train loss 0.0185, Validation loss 0.0182
Epoch 20: Train loss 0.0180, Validation loss 0.0183
Epoch 21: Train loss 0.0178, Validation loss 0.0183
Epoch 22: Train loss 0.0176, Validation loss 0.0173
Epoch 23: Train loss 0.0172, Validation loss 0.0172
Epoch 24: Train loss 0.0171, Validation loss 0.0170
Epoch 25: Train loss 0.0168, Validation loss 0.0168
Epoch 26: Train loss 0.0166, Validation loss 0.0167
Epoch 27: Train loss 0.0166, Validation loss 0.0165
Epoch 28: Train loss 0.0164, Validation loss 0.0166
Epoch 29: Train loss 0.0162, Validation loss 0.0162
Epoch 30: Train loss 0.0161, Validation loss 0.0162
Epoch 31: Train loss 0.0159, Validation loss 0.0162
Epoch 32: Train loss 0.0158, Validation loss 0.0159
Epoch 33: Train loss 0.0156, Validation loss 0.0158
Epoch 34: Train loss 0.0155, Validation loss 0.0156
Epoch 35: Train loss 0.0153, Validation loss 0.0155
Epoch 36: Train loss 0.0151, Validation loss 0.0156
Epoch 37: Train loss 0.0151, Validation loss 0.0154
Epoch 38: Train loss 0.0149, Validation loss 0.0152
Epoch 39: Train loss 0.0147, Validation loss 0.0153
Epoch 40: Train loss 0.0144, Validation loss 0.0146
Epoch 41: Train loss 0.0141, Validation loss 0.0142
Epoch 42: Train loss 0.0136, Validation loss 0.0141
Epoch 43: Train loss 0.0133, Validation loss 0.0134
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.0121
Epoch 47: Train loss 0.0116, Validation loss 0.0117
Epoch 48: Train loss 0.0112, Validation loss 0.0111
Epoch 49: Train loss 0.0107, Validation loss 0.0107
Epoch 50: Train loss 0.0102, Validation loss 0.0102
Epoch 51: Train loss 0.0097, Validation loss 0.0098
Epoch 52: Train loss 0.0092, Validation loss 0.0093
Epoch 53: Train loss 0.0087, Validation loss 0.0091
Epoch 54: Train loss 0.0083, Validation loss 0.0084
Epoch 55: Train loss 0.0078, Validation loss 0.0081
Epoch 56: Train loss 0.0074, Validation loss 0.0077
Epoch 57: Train loss 0.0071, Validation loss 0.0072
Epoch 58: Train loss 0.0068, Validation loss 0.0070
Epoch 59: Train loss 0.0064, Validation loss 0.0066
Epoch 60: Train loss 0.0062, Validation loss 0.0063
Epoch 61: Train loss 0.0060, Validation loss 0.0061
Epoch 62: Train loss 0.0058, Validation loss 0.0062
Epoch 63: Train loss 0.0056, Validation loss 0.0059
Epoch 64: Train loss 0.0055, Validation loss 0.0058
Epoch 65: Train loss 0.0054, 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.0055
Epoch 69: Train loss 0.0051, Validation loss 0.0054
Epoch 70: Train loss 0.0050, Validation loss 0.0053
Epoch 71: Train loss 0.0050, Validation loss 0.0054
Epoch 72: Train loss 0.0050, Validation loss 0.0052
Epoch 73: Train loss 0.0048, Validation loss 0.0052
Epoch 74: Train loss 0.0047, Validation loss 0.0051
Epoch 75: Train loss 0.0047, Validation loss 0.0053
Epoch 76: Train loss 0.0047, Validation loss 0.0052
Epoch 77: Train loss 0.0047, Validation loss 0.0051
Epoch 78: Train loss 0.0047, 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.0049
Epoch 83: Train loss 0.0045, Validation loss 0.0049
Epoch 84: Train loss 0.0044, Validation loss 0.0048
Epoch 85: Train loss 0.0044, Validation loss 0.0050
Epoch 86: Train loss 0.0044, Validation loss 0.0054
Epoch 87: Train loss 0.0047, Validation loss 0.0053
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.0041, Validation loss 0.0046
Epoch 95: Train loss 0.0041, Validation loss 0.0046
Epoch 96: Train loss 0.0041, Validation loss 0.0045
Epoch 97: Train loss 0.0040, Validation loss 0.0046
Epoch 98: Train loss 0.0040, 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 236.0 0.8536 0.0786 0.0032 0.0646
1 164.0 0.2963 0.1478 0.0062 1.8722
2 155.0 0.3628 0.1361 0.0044 1.9883
3 153.0 0.7288 0.0972 0.0020 0.5528
4 140.0 0.7994 0.0785 0.0033 0.0648
... ... ... ... ... ...
3916 1.0 0.8986 NaN 0.0273 0.1095
3917 1.0 0.9338 NaN 0.0076 0.1202
3918 1.0 0.0655 NaN 0.0076 1.2210
3919 1.0 0.9423 NaN 0.0023 0.0893
3920 1.0 0.8775 NaN 0.0073 0.1073

3921 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.17306799, 0.        , ..., 0.17837088, 0.        ,
        0.        ],
       [0.        , 0.17640512, 0.        , ..., 0.12641321, 0.        ,
        0.        ],
       [0.        , 0.18093087, 0.        , ..., 0.07921579, 0.        ,
        0.        ],
       ...,
       [0.        , 0.39342135, 0.        , ..., 0.        , 0.        ,
        0.59141845],
       [0.        , 0.40085942, 0.        , ..., 0.        , 0.        ,
        0.6469912 ],
       [0.        , 0.36902654, 0.        , ..., 0.        , 0.        ,
        0.6806819 ]], dtype=float32)

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

Gallery generated by Sphinx-Gallery