2015-05-25 6 views
1

Как я пытаюсь пример RFE из пакета «» каретки взяты из here, я продолжал получать эту ошибкуR ошибка функции RFE «каретка» Пакет: там должно быть одинаковое количество образцов в х и у

Error in rfe.default(d[1:2901, ], c(1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, : 
    there should be the same number of samples in x and y 

Этот вопрос has been asked, но его решение не применяется в этом случае.

Вот код:

set.seed(7) 
# load the library 
library(mlbench) 
library(caret) 

# load the data 
d <- read.table("d.dat") 

# define the control using a random forest selection function 
control <- rfeControl(functions=rfFuncs, method="cv", number=10) 

# run the RFE algorithm 
results <- rfe(d[1:2901, ], c(1,1,1,1, 1, 1,2,2,2, 3 ,3,3,4, 4, 4), sizes=c(1:2901), rfeControl=control) 

# summarize the results 
print(results) 

Набор данных представляет собой кадр данных из 2901 строк (признаков) и 15 столбцов. Вектор c (1,1,1,1,1,1,2,2,2,3,3,3,3,4,4,4) является предиктором для признаков.

Какой параметр я устанавливаю неправильно?

ответ

0

Существует соглашение о том, что строки представляют собой наблюдения и столбцы. Способ, которым вы предоставили x аргумент rfe означает, что у вас есть 2901 наблюдений, что приводит к несоответствию с 15 результатами. Используйте функцию транспонирования t по вашим данным (если, конечно, 15 столбцов).

y = c(1,1,1...) vector не следует назвать предиктором. Это зависимая переменная или результат. Первый аргумент - это data.frame предикторных переменных.

0

Мы не знаем ваши данные, но это работает с имитацией данных:

set.seed(7) 
d=data.frame(matrix(rnorm(2901*15,1,.5),ncol=15)) 
#something like dependent variable 
dp=factor(sample(c(1,1,1,1, 1, 1,2,2,2, 3 ,3,3,4, 4, 4),2901,replace = TRUE)) 

# define the control using a random forest selection function 
control <- rfeControl(functions=rfFuncs, method="cv", number=10) 

# run the RFE algorithm 
sz=50 # Change sz to 2901 for full sample 
results <- rfe(d[1:sz, ], dp[1:sz], sizes=c(1:15), rfeControl=control) 

# summarize the results 
print(results) 
## End of the printed results 
## The top 5 variables (out of 6): 
## X5, X6, X15, X14, X3 
0
rfe(x, y,sizes = subsets, rfeControl = ctrl) 

Ваша проблема заключается в том, что вы не имеете номер факса строк х, как же длины вектор y