Еще одно значение точности c отсутствует в caret :: train, на этот раз с использованием polr - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь использовать метод polr в caret::train и получаю ошибку Something is wrong; all the Accuracy metric values are missing:. Я прошел через многие, многие другие вопросы, касающиеся этой ошибки, и либо они не применяются, либо ответы не работают.

К сожалению, мои данные являются собственностью, поэтому я не могу их предоставить и Мне не удалось воспроизвести эту точную ошибку в выборочных наборах данных R.

  1. Я готовлю модель, используя recipes, я что-то не так сделал?
  2. Некоторые из моих предикторов факторов несбалансированны, это может быть частью этого?
  3. Что-нибудь в моем коде странно?
  4. Что еще может происходить?

В любом случае, вот что Я работаю с В моем наборе данных нет 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...