str(oil)
## 'data.frame':    96 obs. of  8 variables:
##  $ Palmitic  : num  9.7 11.1 11.5 10 12.2 9.8 10.5 10.5 11.5 10 ...
##  $ Stearic   : num  5.2 5 5.2 4.8 5 4.2 5 5 5.2 4.8 ...
##  $ Oleic     : num  31 32.9 35 30.4 31.1 43 31.8 31.8 35 30.4 ...
##  $ Linoleic  : num  52.7 49.8 47.2 53.5 50.5 39.2 51.3 51.3 47.2 53.5 ...
##  $ Linolenic : num  0.4 0.3 0.2 0.3 0.3 2.4 0.4 0.4 0.2 0.3 ...
##  $ Eicosanoic: num  0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 ...
##  $ Eicosenoic: num  0.1 0.1 0.1 0.1 0.1 0.5 0.1 0.1 0.1 0.1 ...
##  $ oilType   : Factor w/ 7 levels "A","B","C","D",..: 1 1 1 1 1 1 1 1 1 1 ...
table(oil$oilType)
## 
##  A  B  C  D  E  F  G 
## 37 26  3  7 11 10  2
  1. The oilType variable is highly imbalanced, with class A having 37 samples while classes like C and G have only 3 and 2 samples, respectively. To address this imbalanced we can use stratified sampling to split training/testing sets so each class is proportionally represented.

  2. I would optimize Kappa, since it adjusts for chance agreement and performs better under class imbalance compared to raw accuracy.

set.seed(123)

trainIndex1 <- createDataPartition(oil$oilType, p = 0.8, list = FALSE)

train1 <- oil[trainIndex1, ]
test1  <- oil[-trainIndex1, ]

preProc1 <- preProcess(train1, method = c("center", "scale"))

train1 <- predict(preProc1, train1)
test1  <- predict(preProc1, test1)

ctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 3)

# Linear models
lda_model <- train(oilType ~ ., data = train1,
                   method = "lda",
                   trControl = ctrl,
                   metric = "Kappa")

multinom_model <- train(oilType ~ ., data = train1,
                        method = "multinom",
                        trControl = ctrl,
                        metric = "Kappa")
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.159176
## iter  20 value 0.044469
## iter  30 value 0.015319
## iter  40 value 0.010889
## iter  50 value 0.002770
## iter  60 value 0.002049
## iter  70 value 0.000725
## iter  80 value 0.000181
## iter  90 value 0.000160
## final  value 0.000094 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 18.436473
## iter  20 value 14.444551
## final  value 14.442703 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.289870
## iter  20 value 0.194337
## iter  30 value 0.179489
## iter  40 value 0.172492
## iter  50 value 0.161931
## iter  60 value 0.157325
## iter  70 value 0.151631
## iter  80 value 0.149232
## iter  90 value 0.147478
## iter 100 value 0.147028
## final  value 0.147028 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 0.151556
## iter  20 value 0.051278
## iter  30 value 0.022255
## iter  40 value 0.007877
## iter  50 value 0.004298
## iter  60 value 0.001691
## iter  70 value 0.000781
## iter  80 value 0.000453
## iter  90 value 0.000432
## final  value 0.000068 
## converged
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 18.169176
## iter  20 value 15.182643
## final  value 15.181846 
## converged
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 0.283030
## iter  20 value 0.200698
## iter  30 value 0.189792
## iter  40 value 0.181003
## iter  50 value 0.175660
## iter  60 value 0.171077
## iter  70 value 0.167859
## iter  80 value 0.166240
## iter  90 value 0.165350
## iter 100 value 0.164802
## final  value 0.164802 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 1.294900
## iter  20 value 0.278970
## iter  30 value 0.005777
## iter  40 value 0.002975
## iter  50 value 0.000905
## final  value 0.000094 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 17.089738
## iter  20 value 14.514825
## final  value 14.513392 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 1.342429
## iter  20 value 0.380690
## iter  30 value 0.204104
## iter  40 value 0.193164
## iter  50 value 0.180832
## iter  60 value 0.176095
## iter  70 value 0.173060
## iter  80 value 0.170160
## iter  90 value 0.168203
## iter 100 value 0.167099
## final  value 0.167099 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.206773
## iter  20 value 0.068295
## iter  30 value 0.025699
## iter  40 value 0.010755
## iter  50 value 0.007274
## iter  60 value 0.001825
## iter  70 value 0.000235
## final  value 0.000086 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 16.849312
## iter  20 value 15.240394
## final  value 15.240249 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.321165
## iter  20 value 0.215152
## iter  30 value 0.195817
## iter  40 value 0.184063
## iter  50 value 0.179738
## iter  60 value 0.175888
## iter  70 value 0.172277
## iter  80 value 0.169952
## iter  90 value 0.168637
## iter 100 value 0.168030
## final  value 0.168030 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.098341
## iter  20 value 0.034241
## iter  30 value 0.009782
## iter  40 value 0.005684
## iter  50 value 0.000509
## iter  60 value 0.000280
## iter  70 value 0.000194
## iter  80 value 0.000175
## final  value 0.000098 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 17.624587
## iter  20 value 13.877666
## final  value 13.876097 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.215563
## iter  20 value 0.178042
## iter  30 value 0.164009
## iter  40 value 0.154099
## iter  50 value 0.150534
## iter  60 value 0.147663
## iter  70 value 0.146173
## iter  80 value 0.144944
## iter  90 value 0.144342
## iter 100 value 0.144094
## final  value 0.144094 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 0.154678
## iter  20 value 0.056304
## iter  30 value 0.018982
## iter  40 value 0.007084
## iter  50 value 0.002893
## iter  60 value 0.001699
## iter  70 value 0.000950
## final  value 0.000098 
## converged
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 19.584263
## iter  20 value 15.152762
## final  value 15.150532 
## converged
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 0.279370
## iter  20 value 0.209103
## iter  30 value 0.197294
## iter  40 value 0.189720
## iter  50 value 0.182259
## iter  60 value 0.176852
## iter  70 value 0.172093
## iter  80 value 0.169233
## iter  90 value 0.167388
## iter 100 value 0.167157
## final  value 0.167157 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 0.707517
## iter  20 value 0.067902
## iter  30 value 0.004808
## iter  40 value 0.001203
## iter  50 value 0.000567
## iter  60 value 0.000391
## final  value 0.000081 
## converged
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 17.561176
## iter  20 value 13.745796
## final  value 13.744875 
## converged
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 0.752504
## iter  20 value 0.172673
## iter  30 value 0.140059
## iter  40 value 0.134694
## iter  50 value 0.132196
## iter  60 value 0.128590
## iter  70 value 0.127138
## iter  80 value 0.126377
## iter  90 value 0.125729
## iter 100 value 0.124990
## final  value 0.124990 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.192316
## iter  20 value 0.064039
## iter  30 value 0.024466
## iter  40 value 0.009618
## iter  50 value 0.003999
## iter  60 value 0.001528
## iter  70 value 0.000317
## iter  80 value 0.000104
## final  value 0.000099 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 16.947914
## iter  20 value 15.206042
## final  value 15.205029 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.321157
## iter  20 value 0.219048
## iter  30 value 0.200295
## iter  40 value 0.192749
## iter  50 value 0.180653
## iter  60 value 0.176637
## iter  70 value 0.173128
## iter  80 value 0.171314
## iter  90 value 0.168425
## iter 100 value 0.167869
## final  value 0.167869 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.215479
## iter  20 value 0.071510
## iter  30 value 0.019862
## iter  40 value 0.011437
## iter  50 value 0.002480
## iter  60 value 0.002085
## iter  70 value 0.001188
## iter  80 value 0.000325
## iter  90 value 0.000294
## iter 100 value 0.000231
## final  value 0.000231 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 16.066990
## iter  20 value 14.682653
## final  value 14.682281 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.329710
## iter  20 value 0.212330
## iter  30 value 0.189221
## iter  40 value 0.181326
## iter  50 value 0.177786
## iter  60 value 0.170498
## iter  70 value 0.167449
## iter  80 value 0.164685
## iter  90 value 0.163291
## iter 100 value 0.162992
## final  value 0.162992 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.180046
## iter  20 value 0.043225
## iter  30 value 0.023716
## iter  40 value 0.005955
## iter  50 value 0.004209
## iter  60 value 0.001118
## iter  70 value 0.000666
## iter  80 value 0.000121
## iter  80 value 0.000097
## iter  80 value 0.000097
## final  value 0.000097 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 21.493633
## iter  20 value 14.965482
## final  value 14.960477 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.325365
## iter  20 value 0.209609
## iter  30 value 0.198473
## iter  40 value 0.186829
## iter  50 value 0.180188
## iter  60 value 0.174600
## iter  70 value 0.168559
## iter  80 value 0.166816
## iter  90 value 0.165941
## iter 100 value 0.165582
## final  value 0.165582 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 142.051441 
## iter  10 value 0.178663
## iter  20 value 0.043028
## iter  30 value 0.021937
## iter  40 value 0.011654
## iter  50 value 0.002044
## iter  60 value 0.001679
## iter  70 value 0.000641
## iter  80 value 0.000335
## iter  90 value 0.000304
## iter 100 value 0.000217
## final  value 0.000217 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 142.051441 
## iter  10 value 17.519751
## iter  20 value 14.421573
## final  value 14.420565 
## converged
## # weights:  63 (48 variable)
## initial  value 142.051441 
## iter  10 value 0.316776
## iter  20 value 0.204833
## iter  30 value 0.196062
## iter  40 value 0.186970
## iter  50 value 0.178934
## iter  60 value 0.173428
## iter  70 value 0.168731
## iter  80 value 0.166583
## iter  90 value 0.163829
## iter 100 value 0.163416
## final  value 0.163416 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.166885
## iter  20 value 0.034846
## iter  30 value 0.019184
## iter  40 value 0.009082
## iter  50 value 0.005759
## iter  60 value 0.003877
## iter  70 value 0.000370
## iter  80 value 0.000188
## iter  90 value 0.000127
## final  value 0.000059 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 19.580469
## iter  20 value 14.988800
## final  value 14.984436 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.284024
## iter  20 value 0.179285
## iter  30 value 0.161485
## iter  40 value 0.156339
## iter  50 value 0.152308
## iter  60 value 0.150373
## iter  70 value 0.148281
## iter  80 value 0.146360
## iter  90 value 0.145152
## iter 100 value 0.144903
## final  value 0.144903 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.199308
## iter  20 value 0.049886
## iter  30 value 0.023950
## iter  40 value 0.011132
## iter  50 value 0.005958
## iter  60 value 0.003666
## iter  70 value 0.001914
## iter  80 value 0.001094
## iter  90 value 0.000204
## final  value 0.000070 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 19.221938
## iter  20 value 15.063799
## final  value 15.063157 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.319856
## iter  20 value 0.213342
## iter  30 value 0.196303
## iter  40 value 0.186450
## iter  50 value 0.182403
## iter  60 value 0.177826
## iter  70 value 0.172839
## iter  80 value 0.170121
## iter  90 value 0.168014
## iter 100 value 0.167721
## final  value 0.167721 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.133735
## iter  20 value 0.040080
## iter  30 value 0.015993
## iter  40 value 0.006636
## iter  50 value 0.003519
## iter  60 value 0.003072
## iter  70 value 0.000882
## iter  80 value 0.000704
## iter  90 value 0.000598
## iter 100 value 0.000329
## final  value 0.000329 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 16.281589
## iter  20 value 14.312499
## final  value 14.312234 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.285016
## iter  20 value 0.205385
## iter  30 value 0.187335
## iter  40 value 0.177481
## iter  50 value 0.167929
## iter  60 value 0.159273
## iter  70 value 0.153065
## iter  80 value 0.148958
## iter  90 value 0.145393
## iter 100 value 0.144326
## final  value 0.144326 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 0.229726
## iter  20 value 0.068947
## iter  30 value 0.020950
## iter  40 value 0.007288
## iter  50 value 0.004907
## iter  60 value 0.002659
## iter  70 value 0.000828
## iter  80 value 0.000466
## iter  90 value 0.000406
## iter 100 value 0.000281
## final  value 0.000281 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 16.714454
## iter  20 value 14.690152
## final  value 14.689894 
## converged
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 0.345926
## iter  20 value 0.210043
## iter  30 value 0.190628
## iter  40 value 0.182824
## iter  50 value 0.179279
## iter  60 value 0.175034
## iter  70 value 0.171046
## iter  80 value 0.166597
## iter  90 value 0.165060
## iter 100 value 0.164432
## final  value 0.164432 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.165437
## iter  20 value 0.053175
## iter  30 value 0.017382
## iter  40 value 0.010083
## iter  50 value 0.002632
## iter  60 value 0.000709
## iter  70 value 0.000619
## iter  80 value 0.000363
## iter  90 value 0.000138
## final  value 0.000087 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 21.559056
## iter  20 value 14.536551
## iter  30 value 14.520471
## final  value 14.520470 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.283096
## iter  20 value 0.201301
## iter  30 value 0.187499
## iter  40 value 0.177556
## iter  50 value 0.172783
## iter  60 value 0.168556
## iter  70 value 0.166435
## iter  80 value 0.163353
## iter  90 value 0.162047
## iter 100 value 0.161717
## final  value 0.161717 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 134.267800 
## iter  10 value 1.402095
## iter  20 value 0.147924
## iter  30 value 0.022319
## iter  40 value 0.000869
## iter  50 value 0.000228
## iter  60 value 0.000129
## final  value 0.000089 
## converged
## # weights:  63 (48 variable)
## initial  value 134.267800 
## iter  10 value 16.993992
## iter  20 value 14.212205
## final  value 14.210951 
## converged
## # weights:  63 (48 variable)
## initial  value 134.267800 
## iter  10 value 1.444497
## iter  20 value 0.257606
## iter  30 value 0.190985
## iter  40 value 0.177118
## iter  50 value 0.169051
## iter  60 value 0.164950
## iter  70 value 0.159668
## iter  80 value 0.156648
## iter  90 value 0.154408
## iter 100 value 0.153329
## final  value 0.153329 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 1.025264
## iter  20 value 0.107478
## iter  30 value 0.010102
## iter  40 value 0.003109
## iter  50 value 0.000458
## iter  60 value 0.000210
## final  value 0.000079 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 18.056748
## iter  20 value 15.171287
## iter  30 value 15.168723
## iter  30 value 15.168723
## iter  30 value 15.168723
## final  value 15.168723 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 1.077714
## iter  20 value 0.257114
## iter  30 value 0.214570
## iter  40 value 0.198979
## iter  50 value 0.189212
## iter  60 value 0.182950
## iter  70 value 0.179309
## iter  80 value 0.174361
## iter  90 value 0.171729
## iter 100 value 0.169580
## final  value 0.169580 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 0.165490
## iter  20 value 0.049394
## iter  30 value 0.025312
## iter  40 value 0.006616
## iter  50 value 0.002672
## iter  60 value 0.001332
## iter  70 value 0.001077
## iter  80 value 0.000322
## iter  90 value 0.000307
## final  value 0.000058 
## converged
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 19.759044
## iter  20 value 15.110649
## final  value 15.109750 
## converged
## # weights:  63 (48 variable)
## initial  value 136.213710 
## iter  10 value 0.304188
## iter  20 value 0.208954
## iter  30 value 0.197400
## iter  40 value 0.187335
## iter  50 value 0.174417
## iter  60 value 0.168923
## iter  70 value 0.166057
## iter  80 value 0.165230
## iter  90 value 0.164152
## iter 100 value 0.163861
## final  value 0.163861 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.137738
## iter  20 value 0.045393
## iter  30 value 0.020705
## iter  40 value 0.013225
## iter  50 value 0.008843
## iter  60 value 0.000913
## iter  70 value 0.000514
## iter  80 value 0.000386
## iter  90 value 0.000233
## iter 100 value 0.000160
## final  value 0.000160 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 19.860560
## iter  20 value 14.630133
## final  value 14.625283 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.261195
## iter  20 value 0.191302
## iter  30 value 0.183338
## iter  40 value 0.176411
## iter  50 value 0.166643
## iter  60 value 0.162106
## iter  70 value 0.159703
## iter  80 value 0.157975
## iter  90 value 0.156478
## iter 100 value 0.156162
## final  value 0.156162 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.114498
## iter  20 value 0.031698
## iter  30 value 0.014310
## iter  40 value 0.003821
## iter  50 value 0.001634
## iter  60 value 0.000742
## iter  70 value 0.000551
## iter  80 value 0.000303
## iter  90 value 0.000128
## final  value 0.000099 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 21.816699
## iter  20 value 15.162279
## iter  30 value 15.153800
## final  value 15.153798 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.261451
## iter  20 value 0.193068
## iter  30 value 0.180550
## iter  40 value 0.166494
## iter  50 value 0.157043
## iter  60 value 0.152599
## iter  70 value 0.150506
## iter  80 value 0.148859
## iter  90 value 0.148031
## iter 100 value 0.147868
## final  value 0.147868 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 134.267800 
## iter  10 value 0.230931
## iter  20 value 0.064247
## iter  30 value 0.022571
## iter  40 value 0.006310
## iter  50 value 0.003373
## iter  60 value 0.002334
## iter  70 value 0.001811
## iter  80 value 0.001222
## iter  90 value 0.000189
## final  value 0.000074 
## converged
## # weights:  63 (48 variable)
## initial  value 134.267800 
## iter  10 value 18.494878
## iter  20 value 14.600932
## final  value 14.600298 
## converged
## # weights:  63 (48 variable)
## initial  value 134.267800 
## iter  10 value 0.350242
## iter  20 value 0.211137
## iter  30 value 0.190310
## iter  40 value 0.180836
## iter  50 value 0.176343
## iter  60 value 0.170382
## iter  70 value 0.166830
## iter  80 value 0.163905
## iter  90 value 0.162651
## iter 100 value 0.162151
## final  value 0.162151 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.174925
## iter  20 value 0.054213
## iter  30 value 0.020273
## iter  40 value 0.007401
## iter  50 value 0.004205
## iter  60 value 0.001352
## iter  70 value 0.001072
## iter  80 value 0.000567
## iter  90 value 0.000540
## final  value 0.000081 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 16.929660
## iter  20 value 15.185102
## final  value 15.184176 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.304875
## iter  20 value 0.206564
## iter  30 value 0.195127
## iter  40 value 0.189225
## iter  50 value 0.181125
## iter  60 value 0.174954
## iter  70 value 0.173158
## iter  80 value 0.170520
## iter  90 value 0.168577
## iter 100 value 0.168140
## final  value 0.168140 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.154375
## iter  20 value 0.054451
## iter  30 value 0.017753
## iter  40 value 0.007578
## iter  50 value 0.005352
## iter  60 value 0.003651
## iter  70 value 0.000526
## iter  80 value 0.000277
## iter  90 value 0.000147
## final  value 0.000082 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 19.021628
## iter  20 value 15.299515
## iter  30 value 15.275844
## final  value 15.275843 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.287492
## iter  20 value 0.212008
## iter  30 value 0.199807
## iter  40 value 0.186401
## iter  50 value 0.182340
## iter  60 value 0.175035
## iter  70 value 0.172150
## iter  80 value 0.169309
## iter  90 value 0.167526
## iter 100 value 0.167213
## final  value 0.167213 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.177753
## iter  20 value 0.060104
## iter  30 value 0.019291
## iter  40 value 0.009374
## iter  50 value 0.002541
## iter  60 value 0.000747
## iter  70 value 0.000621
## iter  80 value 0.000396
## iter  90 value 0.000198
## final  value 0.000083 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 17.904524
## iter  20 value 14.976180
## iter  30 value 14.967875
## iter  30 value 14.967875
## iter  30 value 14.967875
## final  value 14.967875 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.309129
## iter  20 value 0.216722
## iter  30 value 0.200885
## iter  40 value 0.193440
## iter  50 value 0.183424
## iter  60 value 0.177498
## iter  70 value 0.172831
## iter  80 value 0.170402
## iter  90 value 0.168041
## iter 100 value 0.167348
## final  value 0.167348 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.151618
## iter  20 value 0.054917
## iter  30 value 0.017146
## iter  40 value 0.006506
## iter  50 value 0.004882
## iter  60 value 0.001953
## iter  70 value 0.000930
## iter  80 value 0.000167
## iter  90 value 0.000137
## final  value 0.000071 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 19.566953
## iter  20 value 14.491000
## iter  30 value 14.464889
## final  value 14.464888 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.283425
## iter  20 value 0.206417
## iter  30 value 0.191755
## iter  40 value 0.183008
## iter  50 value 0.178381
## iter  60 value 0.172757
## iter  70 value 0.169359
## iter  80 value 0.166216
## iter  90 value 0.164850
## iter 100 value 0.164249
## final  value 0.164249 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 1.238851
## iter  20 value 0.059004
## iter  30 value 0.011153
## iter  40 value 0.002629
## iter  50 value 0.000110
## iter  50 value 0.000069
## iter  50 value 0.000069
## final  value 0.000069 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 19.486141
## iter  20 value 15.003538
## final  value 15.001924 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 1.286511
## iter  20 value 0.222596
## iter  30 value 0.199818
## iter  40 value 0.184983
## iter  50 value 0.178765
## iter  60 value 0.173083
## iter  70 value 0.169795
## iter  80 value 0.168630
## iter  90 value 0.166566
## iter 100 value 0.164959
## final  value 0.164959 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.136203
## iter  20 value 0.057430
## iter  30 value 0.020205
## iter  40 value 0.005479
## iter  50 value 0.003171
## iter  60 value 0.001607
## iter  70 value 0.000799
## iter  80 value 0.000513
## iter  90 value 0.000269
## final  value 0.000070 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 17.569410
## iter  20 value 14.317227
## final  value 14.315314 
## converged
## # weights:  63 (48 variable)
## initial  value 138.159621 
## iter  10 value 0.248693
## iter  20 value 0.191261
## iter  30 value 0.174896
## iter  40 value 0.169072
## iter  50 value 0.162579
## iter  60 value 0.160280
## iter  70 value 0.157506
## iter  80 value 0.154529
## iter  90 value 0.153585
## iter 100 value 0.153272
## final  value 0.153272 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.118186
## iter  20 value 0.039381
## iter  30 value 0.011423
## iter  40 value 0.007492
## iter  50 value 0.003542
## iter  60 value 0.000512
## iter  70 value 0.000355
## iter  80 value 0.000313
## final  value 0.000075 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 14.095676
## iter  20 value 13.136054
## final  value 13.135854 
## converged
## # weights:  63 (48 variable)
## initial  value 140.105531 
## iter  10 value 0.230033
## iter  20 value 0.166366
## iter  30 value 0.150763
## iter  40 value 0.147309
## iter  50 value 0.140093
## iter  60 value 0.128190
## iter  70 value 0.126683
## iter  80 value 0.125291
## iter  90 value 0.124789
## iter 100 value 0.124491
## final  value 0.124491 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 134.267800 
## iter  10 value 0.171971
## iter  20 value 0.012289
## iter  30 value 0.006304
## iter  40 value 0.003525
## iter  50 value 0.001895
## iter  60 value 0.000379
## final  value 0.000099 
## converged
## # weights:  63 (48 variable)
## initial  value 134.267800 
## iter  10 value 16.932832
## iter  20 value 15.021471
## final  value 15.013288 
## converged
## # weights:  63 (48 variable)
## initial  value 134.267800 
## iter  10 value 0.399335
## iter  20 value 0.245583
## iter  30 value 0.204943
## iter  40 value 0.193164
## iter  50 value 0.189096
## iter  60 value 0.177617
## iter  70 value 0.173623
## iter  80 value 0.169265
## iter  90 value 0.168337
## iter 100 value 0.167821
## final  value 0.167821 
## stopped after 100 iterations
## # weights:  63 (48 variable)
## initial  value 153.726902 
## iter  10 value 0.150194
## iter  20 value 0.041091
## iter  30 value 0.014709
## iter  40 value 0.005548
## iter  50 value 0.003241
## iter  60 value 0.002007
## iter  70 value 0.000529
## final  value 0.000095 
## converged
glmnet_model <- train(oilType ~ ., data = train1,
                      method = "glmnet",
                      trControl = ctrl,
                      tuneLength = 10,
                      metric = "Kappa")
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning: model fit failed for Fold03.Rep1: alpha=0.1, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep1: alpha=0.2, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep1: alpha=0.3, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep1: alpha=0.4, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep1: alpha=0.5, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep1: alpha=0.6, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep1: alpha=0.7, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep1: alpha=0.8, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep1: alpha=0.9, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep1: alpha=1.0, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning: model fit failed for Fold08.Rep1: alpha=0.1, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold08.Rep1: alpha=0.2, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold08.Rep1: alpha=0.3, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold08.Rep1: alpha=0.4, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold08.Rep1: alpha=0.5, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold08.Rep1: alpha=0.6, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold08.Rep1: alpha=0.7, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold08.Rep1: alpha=0.8, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold08.Rep1: alpha=0.9, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold08.Rep1: alpha=1.0, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning: model fit failed for Fold07.Rep2: alpha=0.1, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold07.Rep2: alpha=0.2, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold07.Rep2: alpha=0.3, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold07.Rep2: alpha=0.4, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold07.Rep2: alpha=0.5, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold07.Rep2: alpha=0.6, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold07.Rep2: alpha=0.7, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold07.Rep2: alpha=0.8, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold07.Rep2: alpha=0.9, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold07.Rep2: alpha=1.0, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning: model fit failed for Fold09.Rep2: alpha=0.1, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold09.Rep2: alpha=0.2, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold09.Rep2: alpha=0.3, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold09.Rep2: alpha=0.4, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold09.Rep2: alpha=0.5, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold09.Rep2: alpha=0.6, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold09.Rep2: alpha=0.7, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold09.Rep2: alpha=0.8, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold09.Rep2: alpha=0.9, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold09.Rep2: alpha=1.0, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning: model fit failed for Fold01.Rep3: alpha=0.1, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold01.Rep3: alpha=0.2, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold01.Rep3: alpha=0.3, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold01.Rep3: alpha=0.4, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold01.Rep3: alpha=0.5, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold01.Rep3: alpha=0.6, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold01.Rep3: alpha=0.7, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold01.Rep3: alpha=0.8, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold01.Rep3: alpha=0.9, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold01.Rep3: alpha=1.0, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning: model fit failed for Fold03.Rep3: alpha=0.1, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep3: alpha=0.2, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep3: alpha=0.3, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep3: alpha=0.4, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep3: alpha=0.5, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep3: alpha=0.6, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep3: alpha=0.7, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep3: alpha=0.8, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep3: alpha=0.9, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning: model fit failed for Fold03.Rep3: alpha=1.0, lambda=0.3228 Error in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars,  : 
##   one multinomial or binomial class has 1 or 0 observations; not allowed
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
## Warning in nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo,
## : There were missing values in resampled performance measures.
## Warning in lognet(x, is.sparse, y, weights, offset, alpha, nobs, nvars, : one
## multinomial or binomial class has fewer than 8 observations; dangerous ground
results1 <- resamples(list(LDA = lda_model,
                           MULTINOM = multinom_model,
                           GLMNET = glmnet_model))

summary(results1)
## 
## Call:
## summary.resamples(object = results1)
## 
## Models: LDA, MULTINOM, GLMNET 
## Number of resamples: 30 
## 
## Accuracy 
##               Min.   1st Qu. Median      Mean 3rd Qu. Max. NA's
## LDA      0.8333333 0.8916667      1 0.9610847       1    1    0
## MULTINOM 0.7777778 1.0000000      1 0.9789021       1    1    0
## GLMNET   1.0000000 1.0000000      1 1.0000000       1    1    6
## 
## Kappa 
##               Min.   1st Qu. Median      Mean 3rd Qu. Max. NA's
## LDA      0.7391304 0.8679654      1 0.9474761       1    1    0
## MULTINOM 0.7096774 1.0000000      1 0.9715644       1    1    0
## GLMNET   1.0000000 1.0000000      1 1.0000000       1    1    6

GLMNET performed best with a mean accuracy of 1.00 and mean Kappa of 1.00, compared to LDA (accuracy = 0.96, Kappa = 0.95) and multinom (accuracy = 0.99, Kappa = 0.98).

# Test performance
pred1 <- predict(glmnet_model, test1)
confusionMatrix(pred1, test1$oilType)
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction A B C D E F G
##          A 7 0 0 0 0 0 0
##          B 0 4 0 0 0 0 0
##          C 0 1 0 0 0 0 0
##          D 0 0 0 1 0 0 0
##          E 0 0 0 0 2 0 0
##          F 0 0 0 0 0 2 0
##          G 0 0 0 0 0 0 0
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9412          
##                  95% CI : (0.7131, 0.9985)
##     No Information Rate : 0.4118          
##     P-Value [Acc > NIR] : 7.111e-06       
##                                           
##                   Kappa : 0.9194          
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: A Class: B Class: C Class: D Class: E Class: F
## Sensitivity            1.0000   0.8000       NA  1.00000   1.0000   1.0000
## Specificity            1.0000   1.0000  0.94118  1.00000   1.0000   1.0000
## Pos Pred Value         1.0000   1.0000       NA  1.00000   1.0000   1.0000
## Neg Pred Value         1.0000   0.9231       NA  1.00000   1.0000   1.0000
## Prevalence             0.4118   0.2941  0.00000  0.05882   0.1176   0.1176
## Detection Rate         0.4118   0.2353  0.00000  0.05882   0.1176   0.1176
## Detection Prevalence   0.4118   0.2353  0.05882  0.05882   0.1176   0.1176
## Balanced Accuracy      1.0000   0.9000       NA  1.00000   1.0000   1.0000
##                      Class: G
## Sensitivity                NA
## Specificity                 1
## Pos Pred Value             NA
## Neg Pred Value             NA
## Prevalence                  0
## Detection Rate              0
## Detection Prevalence        0
## Balanced Accuracy          NA

The glmnet performed best achieving accuracy = 0.9412 and kappa = 0.9194. The model most accurately predicts class A (pumpkin) due to having the largest sample size. It performs worst on class G (corn) due to extremely limited observations.

set.seed(123)

trainIndex2 <- createDataPartition(oil$oilType, p = 0.8, list = FALSE)

train2 <- oil[trainIndex2, ]
test2  <- oil[-trainIndex2, ]

preProc2 <- preProcess(train2, method = c("center", "scale"))

train2 <- predict(preProc2, train2)
test2  <- predict(preProc2, test2)
# Nonlinear models

knn_model <- train(oilType ~ ., data = train2,
                   method = "knn",
                   trControl = ctrl,
                   tuneLength = 10,
                   metric = "Kappa")

svm_model <- train(oilType ~ ., data = train2,
                   method = "svmRadial",
                   trControl = ctrl,
                   tuneLength = 10,
                   metric = "Kappa")

nnet_model <- train(oilType ~ ., data = train2,
                    method = "nnet",
                    trControl = ctrl,
                    trace = FALSE,
                    tuneLength = 10,
                    metric = "Kappa")

results2 <- resamples(list(KNN = knn_model,
                           SVM = svm_model,
                           NNET = nnet_model))

summary(results2)
## 
## Call:
## summary.resamples(object = results2)
## 
## Models: KNN, SVM, NNET 
## Number of resamples: 30 
## 
## Accuracy 
##           Min. 1st Qu. Median      Mean 3rd Qu. Max. NA's
## KNN  0.7142857   0.875   0.95 0.9268783       1    1    0
## SVM  0.8750000   1.000   1.00 0.9884259       1    1    0
## NNET 1.0000000   1.000   1.00 1.0000000       1    1    0
## 
## Kappa 
##           Min.  1st Qu.    Median      Mean 3rd Qu. Max. NA's
## KNN  0.5757576 0.826087 0.9358974 0.9005716       1    1    0
## SVM  0.8333333 1.000000 1.0000000 0.9850694       1    1    0
## NNET 1.0000000 1.000000 1.0000000 1.0000000       1    1    0
pred2 <- predict(svm_model, test2)
confusionMatrix(pred2, test2$oilType)
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction A B C D E F G
##          A 7 0 0 0 0 0 0
##          B 0 4 0 0 0 0 0
##          C 0 0 0 0 0 0 0
##          D 0 0 0 1 0 0 0
##          E 0 0 0 0 2 0 0
##          F 0 1 0 0 0 2 0
##          G 0 0 0 0 0 0 0
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9412          
##                  95% CI : (0.7131, 0.9985)
##     No Information Rate : 0.4118          
##     P-Value [Acc > NIR] : 7.111e-06       
##                                           
##                   Kappa : 0.9187          
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: A Class: B Class: C Class: D Class: E Class: F
## Sensitivity            1.0000   0.8000       NA  1.00000   1.0000   1.0000
## Specificity            1.0000   1.0000        1  1.00000   1.0000   0.9333
## Pos Pred Value         1.0000   1.0000       NA  1.00000   1.0000   0.6667
## Neg Pred Value         1.0000   0.9231       NA  1.00000   1.0000   1.0000
## Prevalence             0.4118   0.2941        0  0.05882   0.1176   0.1176
## Detection Rate         0.4118   0.2353        0  0.05882   0.1176   0.1176
## Detection Prevalence   0.4118   0.2353        0  0.05882   0.1176   0.1765
## Balanced Accuracy      1.0000   0.9000       NA  1.00000   1.0000   0.9667
##                      Class: G
## Sensitivity                NA
## Specificity                 1
## Pos Pred Value             NA
## Neg Pred Value             NA
## Prevalence                  0
## Detection Rate              0
## Detection Prevalence        0
## Balanced Accuracy          NA
  1. The neural network (NNET) performed best with mean accuracy of 1.00 and mean Kappa of 1.00, slightly outperforming SVM (accuracy = 0.95, Kappa = 0.92) and KNN (accuracy = 0.94, Kappa = 0.92).This indicates that NNET captures the nonlinear patterns in the data more effectively than the other models.

  2. Yes, nonlinear models perform better, as shown by higher Kappa values (NNET = 1.00 vs linear models = 0.95–1.00), indicating the data is not linearly separable.

  3. All models perform best on majority classes (A = 41% prevalence, B = 29%) and worse on minority classes (C and G = 0%), confirming class imbalance impacts predictions.

library(modeldata)
## Warning: package 'modeldata' was built under R version 4.5.3
## 
## Attaching package: 'modeldata'
## The following object is masked from 'package:datasets':
## 
##     penguins
data(mlc_churn)
str(mlc_churn)
## tibble [5,000 × 20] (S3: tbl_df/tbl/data.frame)
##  $ state                        : Factor w/ 51 levels "AK","AL","AR",..: 17 36 32 36 37 2 20 25 19 50 ...
##  $ account_length               : int [1:5000] 128 107 137 84 75 118 121 147 117 141 ...
##  $ area_code                    : Factor w/ 3 levels "area_code_408",..: 2 2 2 1 2 3 3 2 1 2 ...
##  $ international_plan           : Factor w/ 2 levels "no","yes": 1 1 1 2 2 2 1 2 1 2 ...
##  $ voice_mail_plan              : Factor w/ 2 levels "no","yes": 2 2 1 1 1 1 2 1 1 2 ...
##  $ number_vmail_messages        : int [1:5000] 25 26 0 0 0 0 24 0 0 37 ...
##  $ total_day_minutes            : num [1:5000] 265 162 243 299 167 ...
##  $ total_day_calls              : int [1:5000] 110 123 114 71 113 98 88 79 97 84 ...
##  $ total_day_charge             : num [1:5000] 45.1 27.5 41.4 50.9 28.3 ...
##  $ total_eve_minutes            : num [1:5000] 197.4 195.5 121.2 61.9 148.3 ...
##  $ total_eve_calls              : int [1:5000] 99 103 110 88 122 101 108 94 80 111 ...
##  $ total_eve_charge             : num [1:5000] 16.78 16.62 10.3 5.26 12.61 ...
##  $ total_night_minutes          : num [1:5000] 245 254 163 197 187 ...
##  $ total_night_calls            : int [1:5000] 91 103 104 89 121 118 118 96 90 97 ...
##  $ total_night_charge           : num [1:5000] 11.01 11.45 7.32 8.86 8.41 ...
##  $ total_intl_minutes           : num [1:5000] 10 13.7 12.2 6.6 10.1 6.3 7.5 7.1 8.7 11.2 ...
##  $ total_intl_calls             : int [1:5000] 3 3 5 7 3 6 7 6 4 5 ...
##  $ total_intl_charge            : num [1:5000] 2.7 3.7 3.29 1.78 2.73 1.7 2.03 1.92 2.35 3.02 ...
##  $ number_customer_service_calls: int [1:5000] 1 1 0 2 3 0 3 0 1 0 ...
##  $ churn                        : Factor w/ 2 levels "yes","no": 2 2 2 2 2 2 2 2 2 2 ...
  1. There are strong correlations between usage variables and their corresponding charges, indicating redundancy. Customers with international plans and frequent service calls are more likely to churn.

set.seed(123)

trainIndex3 <- createDataPartition(mlc_churn$churn, p = 0.8, list = FALSE)

train3 <- mlc_churn[trainIndex3, ]
test3  <- mlc_churn[-trainIndex3, ]

numeric_cols <- names(train3)[sapply(train3, is.numeric)]

preProc3 <- preProcess(train3[, numeric_cols],
                        method = c("center", "scale"))

train3[, numeric_cols] <- predict(preProc3, train3[, numeric_cols])
test3[, numeric_cols]  <- predict(preProc3, test3[, numeric_cols])
glm_model <- train(churn ~ ., data = train3,
                   method = "glm",
                   family = "binomial",
                   trControl = ctrl)

rf_model <- train(churn ~ ., data = train3,
                  method = "rf",
                  trControl = ctrl,
                  ntree = 100)

tree_model <- train(churn ~ ., data = train3,
                    method = "rpart",
                    trControl = ctrl)

results3 <- resamples(list(GLM = glm_model,
                           RF = rf_model,
                           TREE = tree_model))

summary(results3)
## 
## Call:
## summary.resamples(object = results3)
## 
## Models: GLM, RF, TREE 
## Number of resamples: 30 
## 
## Accuracy 
##           Min.   1st Qu.    Median      Mean   3rd Qu.      Max. NA's
## GLM  0.8450000 0.8621554 0.8689152 0.8669535 0.8742951 0.8897243    0
## RF   0.9373434 0.9507185 0.9550561 0.9552605 0.9598997 0.9700000    0
## TREE 0.8646617 0.8775764 0.8874993 0.8894389 0.9011306 0.9197995    0
## 
## Kappa 
##           Min.   1st Qu.    Median      Mean   3rd Qu.      Max. NA's
## GLM  0.1776433 0.2546282 0.2945609 0.2878720 0.3184108 0.4431616    0
## RF   0.7172645 0.7798673 0.7965411 0.7991380 0.8238789 0.8674912    0
## TREE 0.1644951 0.3202698 0.3615284 0.4045404 0.5152732 0.6022678    0
pred3 <- predict(rf_model, test3)
confusionMatrix(pred3, test3$churn)
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction yes  no
##        yes 114   8
##        no   27 850
##                                           
##                Accuracy : 0.965           
##                  95% CI : (0.9516, 0.9755)
##     No Information Rate : 0.8589          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.8469          
##                                           
##  Mcnemar's Test P-Value : 0.002346        
##                                           
##             Sensitivity : 0.8085          
##             Specificity : 0.9907          
##          Pos Pred Value : 0.9344          
##          Neg Pred Value : 0.9692          
##              Prevalence : 0.1411          
##          Detection Rate : 0.1141          
##    Detection Prevalence : 0.1221          
##       Balanced Accuracy : 0.8996          
##                                           
##        'Positive' Class : yes             
## 

The Random Forest model performed best, achieving a cross-validated accuracy of = 0.957 and Kappa of = 0.81, and test accuracy of 0.968 with Kappa 0.8613. In comparison, logistic regression (GLM) had lower performance (accuracy = 0.867, Kappa = 0.28) and the decision tree performed moderately (accuracy = 0.889, Kappa = 0.40). This indicates that Random Forest captures nonlinear relationships and interactions more effectively, leading to superior predictive performance.

set.seed(123)

trainIndex4 <- createDataPartition(oil$oilType, p = 0.8, list = FALSE)

train4 <- oil[trainIndex4, ]
test4  <- oil[-trainIndex4, ]

preProc4 <- preProcess(train4, method = c("center", "scale"))

train4 <- predict(preProc4, train4)
test4  <- predict(preProc4, test4)
tree_model <- train(oilType ~ ., data = train4,
                    method = "rpart",
                    trControl = ctrl,
                    tuneLength = 10)

bag_model <- train(oilType ~ ., data = train4,
                   method = "treebag",
                   trControl = ctrl)

boost_model <- train(oilType ~ ., data = train4,
                     method = "gbm",
                     trControl = ctrl,
                     verbose = FALSE)

results4 <- resamples(list(TREE = tree_model,
                           BAG = bag_model,
                           BOOST = boost_model))

summary(results4)
## 
## Call:
## summary.resamples(object = results4)
## 
## Models: TREE, BAG, BOOST 
## Number of resamples: 30 
## 
## Accuracy 
##            Min.   1st Qu. Median      Mean 3rd Qu. Max. NA's
## TREE  0.5000000 0.7569444    0.8 0.8262698   0.875    1    0
## BAG   0.6250000 0.8784722    1.0 0.9386640   1.000    1    0
## BOOST 0.7777778 0.8784722    1.0 0.9505291   1.000    1    0
## 
## Kappa 
##          Min.   1st Qu.    Median      Mean   3rd Qu. Max. NA's
## TREE  0.34375 0.6896875 0.7435897 0.7677351 0.8333333    1    0
## BAG   0.50000 0.8423948 1.0000000 0.9199458 1.0000000    1    0
## BOOST 0.71875 0.8448438 1.0000000 0.9354482 1.0000000    1    0
pred4 <- predict(boost_model, test4)
confusionMatrix(pred4, test4$oilType)
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction A B C D E F G
##          A 7 0 0 0 0 0 0
##          B 0 5 0 0 0 0 0
##          C 0 0 0 0 0 0 0
##          D 0 0 0 1 0 0 0
##          E 0 0 0 0 2 0 0
##          F 0 0 0 0 0 2 0
##          G 0 0 0 0 0 0 0
## 
## Overall Statistics
##                                      
##                Accuracy : 1          
##                  95% CI : (0.8049, 1)
##     No Information Rate : 0.4118     
##     P-Value [Acc > NIR] : 2.812e-07  
##                                      
##                   Kappa : 1          
##                                      
##  Mcnemar's Test P-Value : NA         
## 
## Statistics by Class:
## 
##                      Class: A Class: B Class: C Class: D Class: E Class: F
## Sensitivity            1.0000   1.0000       NA  1.00000   1.0000   1.0000
## Specificity            1.0000   1.0000        1  1.00000   1.0000   1.0000
## Pos Pred Value         1.0000   1.0000       NA  1.00000   1.0000   1.0000
## Neg Pred Value         1.0000   1.0000       NA  1.00000   1.0000   1.0000
## Prevalence             0.4118   0.2941        0  0.05882   0.1176   0.1176
## Detection Rate         0.4118   0.2941        0  0.05882   0.1176   0.1176
## Detection Prevalence   0.4118   0.2941        0  0.05882   0.1176   0.1176
## Balanced Accuracy      1.0000   1.0000       NA  1.00000   1.0000   1.0000
##                      Class: G
## Sensitivity                NA
## Specificity                 1
## Pos Pred Value             NA
## Neg Pred Value             NA
## Prevalence                  0
## Detection Rate              0
## Detection Prevalence        0
## Balanced Accuracy          NA

Boosting performed best with mean accuracy = 0.957 and Kappa = 0.945, slightly higher than bagging (accuracy = 0.948, Kappa = 0.932) and much better than a single tree (accuracy = 0.834, Kappa = 0.781).

  1. Boosting achieved the best performance due to its ability to iteratively correct errors from previous trees.Bagging improves stability over a single tree but does not perform as well as boosting.