2017-01-19 17 views
-2

Я пытаюсь применить модель повышения, но я продолжаю получать эту ошибку. Любая помощь вообще была бы высоко оценена. Это набор данных из kaggle, данных кредитной карты UCI, если вам интересно.Ошибка в eval (expr, envir, enc): объект 'PAY_0.1' не найден (Boosting)

DataSplit<-createDataPartition(UCIdata$default.payment.next.month,p=.8,list=FALSE) 
boosttrain<-UCIdata[DataSplit,] 
boosttest<-UCIdata[-DataSplit,] 
gmbGrid2<-expand.grid(maxdepth=seq(1,10,1),iter=50,nu=seq(0.1,1,0.1)) 
boostingcontrol2<-trainControl(method="repeatedcv",classProbs = TRUE,summaryFunction = twoClassSummary) 
gmbFit2<-train(default.payment.next.month~.,data=boosttrain[,2:25],method="ada",trControl=boostingcontrol2,verbose=FALSE,tuneGrid=gmbGrid2) 

Затем я получаю это.

Предупредительные сообщения: 1: В train.default (х, у, веса = ш, ...): Метрика "Точность" не в наборе результатов. Вместо этого будет использоваться ROC. 2: В eval (expr, envir, enc): предсказания не удались для Fold01.Rep1: nu = 0,1, maxdepth = 1, iter = 50 Ошибка в eval (expr, envir, enc): объект 'PAY_0.1' not найдено

В наборе данных нет PAY_0.1, только PAY_0, PAY_2, PAY_3, ..., PAY_6. Откуда мог PAY_0.1?

+0

А вот что с голосом? Я совершенно новичок в R, даю мне перерыв oiiiii oi – anoanoanoano

ответ

1

Я полагаю, что PAY_0 является двоичной/факторной переменной в вашем наборе данных. PAY_0.1 - это фиктивная переменная, созданная при расширении этой переменной PAY_0.0 и PAY_0.1. Скорее всего, у PAY_0 очень мало 1s, поэтому у PAY_0.1 будет очень мало 1. Когда вы тренируетесь вместе с CV (repeatcv), возможно, что одна из фраз может не иметь никаких 1 и, следовательно, этой ошибки. Или, возможно, когда вы строите дерево глубины 1, то дерево не имеет поломки, основанной на переменной PAY_0.1.

Чтобы исправить проблему, пожалуйста:

  1. начать свой диапазон глубины немного высока. Поэтому вместо maxdepth=seq(1,10,1), если вы используете maxdepth=seq(4,10,1), у вас может не возникнуть проблема. Глубина 1 дерево слишком мелкое.
  2. Проверьте распределение PAY_0. Если их слишком меньше 1, вы можете сделать upsampling из 1 или downsampling из 0.

 Смежные вопросы

  • Нет связанных вопросов^_^