У меня есть dataframe Д.Ф., я строй модели машинного обучения (C5.0 дерева решений), чтобы предсказать класс колонка (loan_approved):Как обрабатывать ошибки в функции прогнозирования R?
структуры (не реальные данные):
id occupation income loan_approved
1 business 4214214 yes
2 business 32134 yes
3 business 43255 no
4 sailor 5642 yes
5 teacher 53335 no
6 teacher 6342 no
Процесс:
- я случайным образом разделить кадр данных в тесте и поезд, узнал на поезде набора данных (строки 1,2,3,5,6 тренировать д строка 4 в качестве испытания)
- Для того, чтобы учесть новые категориальные уровни в одном или многом колонке, я использовал функцию попытки
Функции:
error_free_predict = function(x){
output = tryCatch({
predict(C50_model, newdata = test[x,], type = "class")
}, error = function(e) {
"no"
})
return(output)
}
Прикладных функции предсказывают:
test <- mutate(test, predicted_class = error_free_predict(1:NROW(test)))
Проблема:
id occupation income loan_approved predicted_class
1 business 4214214 yes no
2 business 32134 yes no
3 business 43255 no no
4 sailor 5642 yes no
5 teacher 53335 no no
6 teacher 6342 no no
Вопрос:
Я знаю, что это происходит потому, что кадр данных испытаний был новый уровень, который не присутствовал в данных поездов, но не должна моя работа во всех случаях, кроме этого?
P.S: не использовать sapply, потому что он был слишком медленным
Какая проблема Ваша проблема? Неужели это только возвращение «нет»? Какова ошибка, возвращаемая вызовом 'pred'? – cdeterman
проблема заключается в том, что функция прогнозирования встречает новые уровни факторов в «оккупации» столбца и не работает не только для одной строки, но и обрабатывает весь фрейм данных как неудачный случай. –
Кажется, что вы должны расслоить раскол, чтобы вы имели примерно одинаковое количество каждой категории в каждом расколе. – Aaron