R: Путаница в RF-модели возвращает ошибку: data` и `reference` должны быть коэффициентами с одинаковыми уровнями - PullRequest
0 голосов
/ 06 июня 2018

Я новый игрок в R и хочу решить задачу двоичной классификации.

В наборе данных есть факторная переменная LABELS с 2 классами: первый - 0, второй - 1. На следующем изображении показан фактический заголовок этого файла: unbalanced_dataset Столбец TimeDate - это просто индекс.Распределение классов определяется как:

print("the number of values with % in factor variable - LABELS:")
percentage <- prop.table(table(dataset$LABELS)) * 100
cbind(freq=table(dataset$LABELS), percentage=percentage)

Результат распределения классов: classes

Также я знаю, что столбец Slot2 рассчитывается по формуле:

Slot2 = Var3 - Slot3 + Slot4

Особенности Var1, Var2, Var3, Var4 были выбраны после анализа корреляционной матрицы.

Перед началом моделирования я разделил набор данных на обучающие и испытательные части.Я попытался построить Модель случайного леса для задачи двоичной классификации, используя следующий код:

rf2 <- randomForest(LABELS ~ Var1 + Var2  + Var3 + Var4, 
                    data=train, ntree = 100,
                    mtry = 4, importance = TRUE)
print(rf2)

Результат:

  Call:
     randomForest(formula = LABELS ~ Var1 + Var2  + Var3 + Var4,
     data = train, ntree = 100,      mtry = 4, importance = TRUE) 

 Type of random forest: classification
 Number of trees: 100
 No. of variables tried at each split: 4

 OOB estimate of  error rate: 0.16%

 Confusion matrix:
           0      1 class.error
    0 164957    341 0.002062941
    1    280 233739 0.001196484

Когда я попытался сделать прогноз:

# Prediction & Confusion Matrix - train data
p1 <- predict(rf2, train, type="prob")
print("Prediction & Confusion Matrix - train data")
confusionMatrix(p1, train$LABELS)

# # Prediction & Confusion Matrix - test data
p2 <- predict(rf2, test, type="prob")
print("Prediction & Confusion Matrix - test data")
confusionMatrix(p2, test$LABELS)

Я получил ошибку в R:

[1] "Prediction & Confusion Matrix - train data"
Error: `data` and `reference` should be factors with the same levels.
Traceback:

1. confusionMatrix(p1, train$LABELS)
2. confusionMatrix.default(p1, train$LABELS)
3. stop("`data` and `reference` should be factors with the same levels.", 
 .     call. = FALSE)

Также я уже пытался исправить это, используя идею из следующих вопросов:

  1. Ошибка в ConfusionMatrix, данные и контрольные коэффициенты должны иметь одинаковое количество уровней R CARET

  2. Ошибка в матрице путаницы: данные и контрольные коэффициенты должны иметь одинаковоеколичество уровней

, но в моем случае это не поможет.

Не могли бы вы помочь мне с этой ошибкой?

IБуду благодарен за любые идеи и комментарии. Заранее спасибо.

1 Ответ

0 голосов
/ 06 июня 2018

Ошибка в R:

Error: `data` and `reference` should be factors with the same levels.

была исправлена ​​путем изменения параметра type в функции предсказывать , правильный код:

# Prediction & Confusion Matrix - train data
p1 <- predict(rf2, train, type="response")
print("Prediction & Confusion Matrix - train data")
confusionMatrix(p1, train$LABELS)

@ Камилла, большое спасибо)

...