Я пытаюсь использовать метод polr
в caret::train
и получаю ошибку Something is wrong; all the Accuracy metric values are missing:
. Я прошел через многие, многие другие вопросы, касающиеся этой ошибки, и либо они не применяются, либо ответы не работают.
К сожалению, мои данные являются собственностью, поэтому я не могу их предоставить и Мне не удалось воспроизвести эту точную ошибку в выборочных наборах данных R.
- Я готовлю модель, используя
recipes
, я что-то не так сделал? - Некоторые из моих предикторов факторов несбалансированны, это может быть частью этого?
- Что-нибудь в моем коде странно?
- Что еще может происходить?
В любом случае, вот что Я работаю с В моем наборе данных нет NA
s:
str(dataset)
$ outcome : Factor w/ 3 levels "Low","Medium",..: 1 1 1 1 2 2 1 1 3 1 ...
$ numericvar1 : num 451424 40505 189327 8760 12979 ...
$ numericvar2 : int 7 2 3 1 4 4 16 6 537 3 ...
$ numericvar3 : int 4 1 1 1 1 1 2 4 116 3 ...
$ numericvar4 : num 10 1 1 1 6 1 2 4 119 3 ...
$ numericvar5 : num 15 50 50 2 2 ...
$ numericvar6 : num 29.5 50 50 2 12 ...
$ factor1 : Factor w/ 2 levels "Yes","No": 1 2 1 2 2 1 2 2 1 2 ...
$ factor2 : Factor w/ 2 levels "Yes","No": 2 2 2 2 2 2 2 2 2 2 ...
$ factor3 : Factor w/ 2 levels "Yes","No": 2 2 2 2 2 2 2 2 1 2 ...
$ factor4 : Factor w/ 5 levels "level1","level2",..: 2 2 2 2 2 5 2 1 5 2 ...
$ factor5 : Factor w/ 2 levels "Yes","No": 1 1 1 1 2 1 1 1 1 1 ...
$ factor6 : Factor w/ 2 levels "Yes","No": 2 2 2 2 2 1 2 2 1 2 ...
######################
rcp <- recipe(outcome ~ ., data = dataset) %>%
step_dummy(all_nominal(), -all_outcomes()) %>%
step_scale(all_numeric()) %>%
step_center(all_numeric()) %>%
prep()
dataset_bake <- bake(rcp, dataset)
str(dataset_bake)
$ outcome : Factor w/ 3 levels "Low","Medium",..: 1 1 1 1 2 2 1 1 3 1 ...
$ numericvar1 : num 0.3759 -0.071 0.0909 -0.1055 -0.1009 ...
$ numericvar2 : num -0.0671 -0.1051 -0.0975 -0.1126 -0.0899 ...
$ numericvar3 : num 0.509 -0.318 -0.318 -0.318 -0.318 ...
$ numericvar4 : num 0.16209 -0.20511 -0.20511 -0.20511 -0.00111 ...
$ numericvar5 : num 0.1422 0.7318 0.7318 -0.0768 -0.0768 ...
$ numericvar6 : num 0.0827 0.201 0.201 -0.076 -0.0183 ...
$ factor1_No : num -2.095 0.477 -2.095 0.477 0.477 ...
$ factor2_No : num 0.199 0.199 0.199 0.199 0.199 ...
$ factor3_No : num 0.115 0.115 0.115 0.115 0.115 ...
$ factor4_level2 : num 0.781 0.781 0.781 0.781 0.781 ...
$ factor4_level3 : num -0.236 -0.236 -0.236 -0.236 -0.236 ...
$ factor4_level4 : num -0.219 -0.219 -0.219 -0.219 -0.219 ...
$ factor4_level5 : num -0.206 -0.206 -0.206 -0.206 -0.206 ...
$ factor5_No : num -0.697 -0.697 -0.697 -0.697 1.435 ...
$ factor6_No : num 0.206 0.206 0.206 0.206 0.206 ...
#################
bake_ctrl <- trainControl(method = "repeatedcv",
number = 10,
repeats = 3,
summaryFunction = multiClassSummary)
amodl <- train(outcome ~ .,
data = dataset_bake,
method = "polr",
trControl = bake_ctrl,
tuneGrid = expand.grid(method = "probit"))
Something is wrong; all the Accuracy metric values are missing:
Accuracy Kappa Mean_F1 Mean_Sensitivity Mean_Specificity Mean_Pos_Pred_Value
Min. : NA Min. : NA Min. : NA Min. : NA Min. : NA Min. : NA
1st Qu.: NA 1st Qu.: NA 1st Qu.: NA 1st Qu.: NA 1st Qu.: NA 1st Qu.: NA
Median : NA Median : NA Median : NA Median : NA Median : NA Median : NA
Mean :NaN Mean :NaN Mean :NaN Mean :NaN Mean :NaN Mean :NaN
3rd Qu.: NA 3rd Qu.: NA 3rd Qu.: NA 3rd Qu.: NA 3rd Qu.: NA 3rd Qu.: NA
Max. : NA Max. : NA Max. : NA Max. : NA Max. : NA Max. : NA
NA's :1 NA's :1 NA's :1 NA's :1 NA's :1 NA's :1
Mean_Neg_Pred_Value Mean_Precision Mean_Recall Mean_Detection_Rate Mean_Balanced_Accuracy
Min. : NA Min. : NA Min. : NA Min. : NA Min. : NA
1st Qu.: NA 1st Qu.: NA 1st Qu.: NA 1st Qu.: NA 1st Qu.: NA
Median : NA Median : NA Median : NA Median : NA Median : NA
Mean :NaN Mean :NaN Mean :NaN Mean :NaN Mean :NaN
3rd Qu.: NA 3rd Qu.: NA 3rd Qu.: NA 3rd Qu.: NA 3rd Qu.: NA
Max. : NA Max. : NA Max. : NA Max. : NA Max. : NA
NA's :1 NA's :1 NA's :1 NA's :1 NA's :1
Переменные с несбалансированными значениями:
factor2: 3.8% Yes
factor3: 1.3% Yes
factor4:
level1: 24%
level2: 62%
level3: 5%
level4: 5%
level5: 4%
factor6: 4.0% Yes
Я действительно не хочу исключать несбалансированные переменные, потому что когда они "Да" «Они почти наверняка повлияют на результат.
Я пытался использовать MASS::polr
напрямую, но у меня тоже возникают проблемы. Может быть, ошибка предлагает информацию о том, почему она не работает в train
:
polr_mod <- polr(outcome ~ ., dataset_bake, Hess = TRUE)
Warning messages:
1: glm.fit: fitted probabilities numerically 0 or 1 occurred
2: In polr(difficultyf ~ ., appTrain3_bake, Hess = TRUE) :
design appears to be rank-deficient, so dropping some coefs
(this still produces a model though)
predict(polr_mod, dataset_test_bake)
Error in X %*% object$coefficients : non-conformable arguments