2016-01-29 3 views
2

Итак, я пытаюсь установить случайный классификатор леса для моего набора данных. Я очень новичок в R, и я думаю, что это простая проблема форматирования.Ошибка при запуске randomForest: объект не найден

Я прочитал в текстовый файл и преобразовать мой набор данных, так что в этом формате: (вынимая конфиденциальную информацию)

>head(df.train,2) 

    GOLGA8A  ITPR3 GPR174 SNORA63 GIMAP8  LEF1 PDE4B LOC100507043 TGFB1I1 SPINT1 
Sample1 3.726046 3.4013711 3.794364 4.265287 -1.514573 7.725775 2.162616 -1.514573 -1.5145732 -1.514573 
Sample2 4.262779 0.9261892 4.744096 7.276971 -1.514573 4.694769 4.707387  2.031476 -0.8325444 2.615991 
... 
... 
CD8B  FECH PYCR1 MGC12916  KCNA3 resp 
Sample1 -1.514573 2.099336 3.427928 1.542951 -1.514573 1 
Sample2 -1.145806 1.204241 2.846832 1.523808 1.616791 1 

В сущности столбцы являются мои функции и ряды моих образцов, последний столбец является моим вектором ответа, который является столбцом факторов, соответственно.

Тогда я использую:

set.seed(1) #Set the seed in order to gain reproducibility 

RF1 = randomForest(resp~., data=df.train,ntree=1000,importance=T,mtry=3) 

Просто пытаются обучить РФ на моей колонке resp, используя другие столбцы функций.

Но я получаю ошибку:

Error in eval(expr, envir, enclos) : object 'PCNA-AS1' not found 

Однако, глядя в мою обучающем наборе я могу ясно найти этот столбец, например, с:

sort(unique(colnames(df.train)) 

Так что я не очень понимаю, ошибка или куда идти отсюда. Мои извинения, если я не задал вопрос правильным образом, спасибо за любую помощь!

+0

Не могли бы вы сделать это воспроизводимым примером (например, предоставить образцы данных для 'df.train', которые вызывают ошибку)? – josliber

ответ

2

Итак, Это была очень ошибка новобранец, я вводил матрицу, а не data.frame, которая вызывала эту ошибку. Почему он жаловался на этот конкретный столбец (который был не первым) по сравнению с другим, я до сих пор не понимаю. Спасибо за помощь. Cheers, Anthony

+0

при создании/литье data.frame, check.names = TRUE. Таким образом, ввод data.frame мог устранить проблемы, поскольку незаконные col.names были бы отредактированы. В общем случае RandomForest дает гораздо меньше проблем с data.frame, чем матрица –

3

Я подозреваю, что это связано с наличием недопустимого имени переменной в вашем фрейме данных. Рассмотрим кадр данных, который просто имеет переменную отклик resp и переменный (незаконно) под названием PCNA-AS1:

(dat <- structure(list(`PCNA-AS1` = c(1, 2, 3), resp = structure(c(2L, 2L, 1L), .Label = c("0", "1"), class = "factor")), .Names = c("PCNA-AS1", "resp"), row.names = c(NA, -3L), class = "data.frame")) 
# PCNA-AS1 resp 
# 1  1 1 
# 2  2 1 
# 3  3 0 

Теперь, когда мы тренируемся случайный лес мы получаем указанную ошибку:

library(randomForest) 
mod <- randomForest(resp~., data=dat) 
# Error in eval(expr, envir, enclos) : object 'PCNA-AS1' not found 

Естественных решение этой проблемы будет преобразовывать ваши имена переменных для всех быть законным:

names(dat) <- make.names(names(dat)) 
dat 
# PCNA.AS1 resp 
# 1  1 1 
# 2  2 1 
# 3  3 0 
mod <- randomForest(resp~., data=dat) 

теперь модель поезда без ошибок.

+0

Спасибо за ваш комментарий Josilber, я попробовал конвертировать в юридические имена, но это не проблема. Ошибка была в самом деле, я дал randomForest матрицу (а не кадр данных), которую я предположил, не имеет значения и что randomForest может легко преобразовать между ними. Но я ошибся, поэтому я решил проблему сейчас. – AHawks

+0

@AHawks OK, то тем более вам необходимо изменить свой вопрос, чтобы сделать его воспроизводимым! (например, код и данные, необходимые для репликации проблемы). Попробуйте сократить столбцы в вашем кадре данных до наименьшего числа, где вы можете воспроизвести проблему, а затем опубликовать этот набор данных (если вы еще не выяснили, что происходит в первую очередь). – josliber

+0

Да, вы определенно правы, это было бы лучше, и я буду делать это для будущих вопросов, просто привыкая к тому, чтобы представлять проблемы здесь при переполнении стека, поэтому спасибо за ваш совет! – AHawks

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