должны быть факторы с одинаковыми уровнями, ошибками и ссылками - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть этот код (ниже), и мне нужно использовать CARET и разделить набор данных на 40% всех данных в наборе данных, которые должны быть в наборе поездов, остальные в наборе тестов;переменная платежа должна быть равномерно распределена по разделению, но код confusionmatrixline выдает ошибку, которая гласит:

"Ошибка: данные и ссылки должны быть факторами с одинаковыми уровнями."

РЕДАКТИРОВАТЬ: переменная платежа является биноминальной переменной, поэтому 0 (нет) и 1 (да).ВВП - это просто числа

Пример набора данных: (пока не знаю, как составить здесь таблицу)

payment    gdp 

0          838493

1         9303032

0          72738 

1        38300022

1         283283

Как это исправить ??

Мой код:

 `index <- createDataPartition(y = dataset$payment, p = 0.40, list = F)
 trainset <- dataset[index, ]
 testset <- dataset[-index, ]

payment_knn <- train(payment ~ gdp, method = "knn", data = trainset, 
trControl = trainControl(method = 'cv', number = 5))
predicted_outcomes <- predict(payment_knn, testset)
conMX_pay <- confusionMatrix(predicted_outcomes, testset$payment) 
conMX_pay `

1 Ответ

0 голосов
/ 26 декабря 2018

Это исключительно для иллюстрации.Убедитесь, что данные теста совпадают с данными поезда.

df<-df %>% 
  mutate(payment=as.factor(payment),gdp=as.numeric(gdp))
metric<-"Accuracy"
control<-trainControl(method="cv",number = 10)
train_set<-createDataPartition(df$payment,p=0.8,list=F)
valid_me<-df[-train_set,]
train_me<-df[train_set,]
#Training
  set.seed(233)       

fit.knn<-train(payment~.,method="knn",data=train_me,metric=metric,trControl=control)
    validated<-predict(fit.knn,valid_me)
    confusionMatrix(validated,valid_me$payment)

Это прекрасно работает, учитывая данные в вашем вопросе.Предупреждения, потому что набор данных слишком мал.Чисто для иллюстрации.Используемые данные:

payment      gdp
1       0   838493
2       1  9303032
3       0    72738
4       1 38300022
5       1   283283

Ура!

...