Получение этого результата при попытке проверить прогностическую точность модели логистической регрессии. Это не кажется правильным. Любая помощь приветствуется!
> dput(head(test$subscribed))
structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("no", "yes"), class =
"factor")
Вход
predictions <- predict(final_model, test, type = "response")`
class_pred<- as.factor(ifelse(predictions > .5, "Yes", "No"))
postResample(class_pred, test$subscribed)
Выход
Accuracy Kappa
NA NA
Привет, это результат этого. ЛОЖЬ 6907
Я не могу воспроизвести вашу ошибку. если вам просто нужна точность, сделайте confusionMatric(table(class_pred, test$subscribed))
что на самом деле такое final_model
, установлено ли оно с помощью glm, как видите, в вашем вопросе не хватает информации. см. stackoverflow.com/questions/5963269/…
Это меня смущает, да, это просто для точности - я получаю эту ошибку для матрицы путаницы.
Да final_model — это модель логистической регрессии, независимые переменные используются для прогнозирования биномиального отклика «да/нет».
да конечно, сделано
вы не правильно выставили уровни. Смотрите мой ответ.
Допустим, ваши данные такие:
df = data.frame(subscribed=sample(c("yes","no"),100,replace=TRUE),
x1 = runif (100),x2=runif (100))
Установите коэффициент правильно:
df$subscribed = factor(df$subscribed,levels=c("no","yes"))
Сделайте модель:
traindf = df[1:70,]
test = df[1:30,]
final_model = glm(subscribed ~ .,data=traindf,family = "binomial")
И предскажите, и установите факторы с одинаковыми уровнями, обратите внимание, что уровни чувствительны к регистру, использование "yes"
отличается от "Yes"
:
predictions <- predict(final_model, test, type = "response")
class_pred<- ifelse(predictions > .5, "yes", "no")
class_pred = factor(class_pred,levels=c("no","yes"))
Затем:
confusionMatrix(table(class_pred, test$subscribed))
Confusion Matrix and Statistics
class_pred no yes
no 0 1
yes 14 15
Большое спасибо! Это решило проблему, я попытался проголосовать, но еще не на требуемом уровне повторения. Еще раз спасибо!
без проблем. вы можете принять ответ, я думаю
можете ли вы проверить, есть ли какие-либо NA в class_pred.
table(is.na(class_pred))
. вам нужно удалить НС