Install

See README.

Examples

Classification

library(nnetsauce)
## Loading required package: forecast
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
## Loading required package: memoise
## Creating Python virtual environment...
## Installing sklearn from r-reticulate...
## Using virtual environment '/Users/t/Documents/R_Packages/nnetsauce/venv' ...
## Warning in system2(python, c("-c", shQuote(command)), stdout = TRUE, stderr =
## TRUE): running command
## ''/Users/t/Documents/R_Packages/nnetsauce/venv/bin/python' -c 'import sys;
## import pip; sys.stdout.write(pip.__version__)' 2>&1' had status 1
## Importing sklearn from Global Env...
 set.seed(123)
 X <- as.matrix(iris[, 1:4])
 y <- as.integer(iris$Species) - 1L

 (index_train <- base::sample.int(n = nrow(X),
                                  size = floor(0.8*nrow(X)),
                                  replace = FALSE))
##   [1]  14  50 118  43 150 148  90  91 143  92 137  99  72  26   7  78  81 147
##  [19] 103 117  76  32 106 109 136   9  41  74  23  27  60  53 126 119 121  96
##  [37]  38  89  34  93  69 138 130  63  13  82  97 142  25 114  21  79 124  47
##  [55] 144 120  16   6 127  86 132  39  31 134 149 112   4 128 110 102  52  22
##  [73] 129  87  35  40  30  12  88 123  64 146  67 122  37   8  51  10 115  42
##  [91]  44  85 107 139  73  20  46  17  54 108  75  80  71  15  24  68 133 145
## [109]  29 104  45 140 101 135  95 116   5 111  94  49
 X_train <- X[index_train, ]
 y_train <- y[index_train]
 X_test <- X[-index_train, ]
 y_test <- y[-index_train]

 obj <- nnetsauce::GLMClassifier(venv_path = "../venv")
 obj$fit(X_train, y_train)
## GLMClassifier(dropout=0.0,
##               optimizer=<nnetsauce.optimizers.optimizer.Optimizer object at 0x127b37310>,
##               type_scaling=['std', 'std', 'std'])
 print(obj$score(X_test, y_test))
## [1] 0.9333333

Regression

 library(datasets)

 n <- 20 ; p <- 5
 X <- matrix(rnorm(n * p), n, p) # no intercept!
 y <- rnorm(n)
 
 sklearn <- nnetsauce::get_sklearn(venv_path = "../venv")
 obj <- sklearn$tree$DecisionTreeRegressor()
 obj2 <- nnetsauce::RandomBagRegressor(obj, venv_path = "../venv")
 obj2$fit(X[1:12,], y[1:12])
## 
##  0/10 [..............................] - ETA: 0s
##  2/10 [██████........................] - ETA: 0s
##  4/10 [████████████..................] - ETA: 0s
##  7/10 [█████████████████████.........] - ETA: 0s
## 10/10 [██████████████████████████████] - 0s 28ms/step
## RandomBagRegressor(col_sample=1.0, dropout=0.0, obj=DecisionTreeRegressor(),
##                    row_sample=1.0)
 print(sqrt(mean((obj2$predict(X[13:20, ]) - y[13:20])**2)))
## [1] 1.781866

AutoML

Regression

X <- MASS::Boston[,-14] # dataset has an ethical problem
y <- MASS::Boston$medv

set.seed(13)
(index_train <- base::sample.int(n = nrow(X),
                                 size = floor(0.8*nrow(X)),
                                 replace = FALSE))
##   [1] 472 259 448 357  74 205 262 432 406 132 320 221 248 337 384 362 399  55
##  [19] 279   5 396 305  54 184  32 482 125  47  81 444 485 267  68 376  87 334
##  [37]  61 373 131 223 387 197 446 324  66 385  62 307 127 371 374  60 476 332
##  [55] 440 222 298 182 318 119  15 157 113  14 441 377 160 287 402 381 435 465
##  [73] 210  78 455 333 129 232 361  97 415 304 490 190 124 303 136 398 139 105
##  [91] 340 273 153 224 147 309   7 329  91  90  46   9 164 468 101 487 313 246
## [109]  67 326  49 264 423 116 170   1 302 442 414 103 437  57 314 355 237 451
## [127] 154  86  53 123  31 460 452 311 383 226 322 277 130 405 109 295 212 421
## [145] 317 200  20  99  16 386 498 165 489  84 495 478 291 134 436 348 316  58
## [163] 126 328  12 217 420 203 339  64 471  73 494 458 502 434 135 100 177 204
## [181] 285 209  82 143 215 159 183 196 216 315 346  22  25 172 233 352 412 231
## [199] 359 416 380 354 236 500 319 240 251  13   2 464  35 417 456 121 390 201
## [217] 418 401  77  18 475 486 146 241 299 244 114 447 503 149 424 228 275 477
## [235]  33 330 111 207 301  92 335  50 454 388 137 505 150 404 351 438 202 430
## [253]  96 484 327 162 431 155 282 499 496 270 235 479 158 419  56 457 189 397
## [271] 239 108  79 166 363  40 245 409 283 450 341 462 156  44 280 422 501 342
## [289] 191 370 144 269 194 185 429 392 306 358 199  85  94 181 186 349  80 145
## [307]  43 161 375 331 229 175 426 408 238 344 379 110  72 343  93 413 174 308
## [325] 480  59 234 128 151 169 104 167 242 470 473 297 179 278 107  83 102  51
## [343] 133 247  19 353 118 289  98   4 284 443 214 288 336 117 300  17  30 378
## [361] 463 293 365 491 497 400 323  26 266 428  29  28 389 198 372  70 286 411
## [379] 321 410 350 265 173 176 459 488 369 220 192 211 115  37 338 481 493 445
## [397] 206  48 347  27 258   6 274 142
X_train <- X[index_train, ]
y_train <- y[index_train]
X_test <- X[-index_train, ]
y_test <- y[-index_train]

obj <- LazyRegressor(venv_path = "../venv")
(res <- obj$fit(X_train, X_test, y_train, y_test))
##                                                 Adjusted R-Squared   R-Squared
## DeepCustomRegressor(ExtraTreesRegressor)                 0.9057805  0.91790778
## DeepCustomRegressor(BaggingRegressor)                    0.8634080  0.88098916
## DeepCustomRegressor(RandomForestRegressor)               0.8511052  0.87026992
## DeepCustomRegressor(MLPRegressor)                        0.8499194  0.86923669
## RandomForestRegressor                                    0.8448451  0.86481553
## DeepCustomRegressor(AdaBoostRegressor)                   0.8005664  0.82623607
## DeepCustomRegressor(LinearRegression)                    0.7472819  0.77981001
## DeepCustomRegressor(TransformedTargetRegressor)          0.7472819  0.77981001
## DeepCustomRegressor(LassoLarsIC)                         0.7472695  0.77979918
## DeepCustomRegressor(RidgeCV)                             0.7471410  0.77968718
## DeepCustomRegressor(LassoLarsCV)                         0.7429694  0.77605256
## DeepCustomRegressor(LassoCV)                             0.7428514  0.77594970
## DeepCustomRegressor(Ridge)                               0.7420801  0.77527772
## DeepCustomRegressor(HuberRegressor)                      0.7395445  0.77306849
## DeepCustomRegressor(ElasticNetCV)                        0.7327859  0.76717982
## DeepCustomRegressor(BayesianRidge)                       0.7314119  0.76598263
## DeepCustomRegressor(KNeighborsRegressor)                 0.7154223  0.75205113
## DeepCustomRegressor(SGDRegressor)                        0.7078489  0.74545254
## DeepCustomRegressor(LarsCV)                              0.7019229  0.74028925
## DeepCustomRegressor(LinearSVR)                           0.6968942  0.73590783
## DeepCustomRegressor(Lasso)                               0.6535395  0.69813345
## DeepCustomRegressor(LassoLars)                           0.6535340  0.69812867
## DeepCustomRegressor(ExtraTreeRegressor)                  0.6211290  0.66989454
## DeepCustomRegressor(PassiveAggressiveRegressor)          0.6086479  0.65901998
## DeepCustomRegressor(DecisionTreeRegressor)               0.6065707  0.65721013
## DeepCustomRegressor(ElasticNet)                          0.6049283  0.65577912
## DeepCustomRegressor(TweedieRegressor)                    0.5796672  0.63376940
## DeepCustomRegressor(RANSACRegressor)                     0.4054278  0.48195691
## DeepCustomRegressor(DummyRegressor)                     -0.1830116 -0.03074282
## DeepCustomRegressor(QuantileRegressor)                  -0.2675167 -0.10437103
## DeepCustomRegressor(Lars)                               -3.0377540 -2.51804307
##                                                      RMSE Time Taken
## DeepCustomRegressor(ExtraTreesRegressor)         2.711916  1.9649322
## DeepCustomRegressor(BaggingRegressor)            3.265265  0.5710542
## DeepCustomRegressor(RandomForestRegressor)       3.409146  5.4784341
## DeepCustomRegressor(MLPRegressor)                3.422695  8.7470169
## RandomForestRegressor                            3.480075  1.2352288
## DeepCustomRegressor(AdaBoostRegressor)           3.945527  1.0043678
## DeepCustomRegressor(LinearRegression)            4.441442  0.1169858
## DeepCustomRegressor(TransformedTargetRegressor)  4.441442  0.2038538
## DeepCustomRegressor(LassoLarsIC)                 4.441551  0.1430681
## DeepCustomRegressor(RidgeCV)                     4.442681  0.5692999
## DeepCustomRegressor(LassoLarsCV)                 4.479178  0.3425362
## DeepCustomRegressor(LassoCV)                     4.480206  0.9145920
## DeepCustomRegressor(Ridge)                       4.486920  0.3606122
## DeepCustomRegressor(HuberRegressor)              4.508921  0.4298031
## DeepCustomRegressor(ElasticNetCV)                4.567048  0.5678279
## DeepCustomRegressor(BayesianRidge)               4.578775  0.1755390
## DeepCustomRegressor(KNeighborsRegressor)         4.713096  0.2389681
## DeepCustomRegressor(SGDRegressor)                4.775398  0.3397481
## DeepCustomRegressor(LarsCV)                      4.823588  0.2068560
## DeepCustomRegressor(LinearSVR)                   4.864106  0.1409967
## DeepCustomRegressor(Lasso)                       5.200352  0.1639521
## DeepCustomRegressor(LassoLars)                   5.200393  0.1282079
## DeepCustomRegressor(ExtraTreeRegressor)          5.438155  0.1271911
## DeepCustomRegressor(PassiveAggressiveRegressor)  5.527003  0.3566940
## DeepCustomRegressor(DecisionTreeRegressor)       5.541652  0.1772842
## DeepCustomRegressor(ElasticNet)                  5.553207  0.2122571
## DeepCustomRegressor(TweedieRegressor)            5.727994  0.2920902
## DeepCustomRegressor(RANSACRegressor)             6.812526  1.2254152
## DeepCustomRegressor(DummyRegressor)              9.609491  0.1256380
## DeepCustomRegressor(QuantileRegressor)           9.946785  0.5869730
## DeepCustomRegressor(Lars)                       17.753165  0.1446719

Time series

set.seed(123)
X <- matrix(rnorm(300), 100, 3)

(index_train <- base::sample.int(n = nrow(X),
                                 size = floor(0.8*nrow(X)),
                                 replace = FALSE))
##  [1] 60 62 80  9 11 43 30 61 74 55 93 34 57 38 84 63 46 78 70 18  2 72 75 21 88
## [26] 71 79 59 37 91  6 40 82 28 32 49 35 67 47 20  1  5 96 99 90 98 48 51 10 53
## [51] 65  7 87 44 36 23 89 24  4 29 45 58 33  3 54 94 76 83 66  8 26 56 14 25 13
## [76] 50 31 92 22 16
X_train <- data.frame(X[index_train, ])
X_test <- data.frame(X[-index_train, ])

obj <- LazyMTS(venv_path = "../venv")

(res <- obj$fit(X_train, X_test))
##                                      RMSE       MAE       MPL Time Taken
## MTS(BayesianRidge)              0.9693231 0.7284321 0.3642161  0.5628440
## MTS(ElasticNetCV)               0.9857480 0.7467560 0.3733780  6.6651118
## MTS(LassoCV)                    0.9899658 0.7509848 0.3754924  3.9591010
## MTS(DummyRegressor)             0.9907240 0.7519778 0.3759889  1.1707079
## MTS(ElasticNet)                 0.9907240 0.7519778 0.3759889  2.1703179
## MTS(Lasso)                      0.9907240 0.7519778 0.3759889  0.2872217
## MTS(LassoLarsCV)                0.9907240 0.7519778 0.3759889  2.7926121
## MTS(LassoLars)                  0.9907240 0.7519778 0.3759889  0.3674440
## MTS(LarsCV)                     0.9956436 0.7448679 0.3724340  2.8965681
## MTS(QuantileRegressor)          0.9966559 0.7577475 0.3788738  0.4395552
## MTS(RandomForestRegressor)      1.0050021 0.7788496 0.3894248 23.9645088
## VAR                             1.0110766 0.7739979 0.3869989  0.1627038
## MTS(MLPRegressor)               1.0155043 0.7619689 0.3809844  1.1144679
## MTS(KNeighborsRegressor)        1.0204875 0.7723135 0.3861567  0.4521461
## MTS(AdaBoostRegressor)          1.0255662 0.7926204 0.3963102 15.8921721
## MTS(ExtraTreesRegressor)        1.0429340 0.7754142 0.3877071 58.8169262
## MTS(BaggingRegressor)           1.0568736 0.8238503 0.4119252  2.4926169
## MTS(TweedieRegressor)           1.0676467 0.8112648 0.4056324  0.3024850
## MTS(RidgeCV)                    1.2321289 0.9610130 0.4805065  0.3187330
## MTS(ExtraTreeRegressor)         1.2463809 0.9800255 0.4900127  0.4356580
## VECM                            1.3765455 1.1327719 0.5663860  0.1125832
## MTS(SGDRegressor)               1.4109004 1.1323320 0.5661660  0.1901710
## MTS(DecisionTreeRegressor)      1.4451682 1.1283590 0.5641795  0.6362481
## MTS(Ridge)                      1.6345720 1.3245349 0.6622674  0.3819172
## MTS(PassiveAggressiveRegressor) 1.7938410 1.4594719 0.7297360  0.1869881
## MTS(TransformedTargetRegressor) 2.0591218 1.6801762 0.8400881  0.2447400
## MTS(LinearRegression)           2.0591218 1.6801762 0.8400881  0.2512259
## MTS(HuberRegressor)             2.0780653 1.6828870 0.8414435  4.1471639
## MTS(LinearSVR)                  2.0784001 1.6831479 0.8415739  0.2394900