Я пытаюсь использовать метод Random Forest в R. Мне нужно прочитать txt-файл (набор тренировок).Прочитать таблицу и случайный лес в R
dataset<- read.table(path1,header=TRUE,sep=",")
Имена столбцов являются цифровыми (т.е. 1005_at), таким образом они автоматически преобразуются, добавляя X, с помощью R (т.е. X1005_at). Для того, чтобы решить эту проблему, я сделал:
colnames(dataset)<-gsub("^[X](.*)","\\1",colnames(dataset))
Теперь имена в порядке, но когда я запускаю Random Forest:
model.rf <- randomForest(class ~ ., data=dataset, importance=TRUE,keep.forest=T, ntree=5, do.trace=T)
У меня есть эта ошибка:
Error in eval(expr, envir, enclos) : object '1005_at' not found
While если я запускаю Random Forest в исходном наборе данных (без изменения имен, поэтому с использованием X1005_at) эта ошибка не возникает. Зачем? Как я могу это исправить?
Я не могу сказать наверняка, но я бы предположил, что это связано с нестандартным названием колонн в сочетании с тем фактом, что 'randomForest' оценивает формулу. Я уверен, что если вы посмотрите на код, этот '.' будет транслировать на замещающий оператор (или эквивалент) где-то, что, скорее всего, является списком ** имен ** столбцов' dataset'. Функция, скорее всего, не делает выделение для нестандартных имен (нет необходимости, почему она должна, так как она имеет ожидания пользователя) и, следовательно, ошибка –
Почему бы просто не разрешить имена в качестве последнего шага? –
Я столкнулся с этой проблемой при использовании aggregate() в кадрах данных с подчеркиванием в имени столбца. Веб-поиск пока не дает никаких хороших объяснений. Но если он работает с преобразованными именами, - сказал Рикардо, почему бы просто не использовать их и не исправить имена в конце? – neilfws