3

当我尝试从此处获取的“caret”包中的 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

已提出此问题,但其解决方案不适用于这种情况。

这是代码:

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,4,4,4) 是特征的预测器。

我设置错误的参数是什么?

4

3 回答 3

0

有一种约定,行是观察值,列是特征。您提供x参数的rfe方式意味着您有 2901 个观察值,这会产生与 15 个结果不匹配的结果。对您的数据使用转置功能t(如果它当然有 15 列)。

向量y = c(1,1,1...)不应称为predictor。它是因变量结果。第一个参数是预测变量的 data.frame。

于 2015-05-25T17:44:09.757 回答
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
于 2015-05-25T18:17:39.423 回答
0
rfe(x, y,sizes = subsets, rfeControl = ctrl)

你的问题是你没有 x 行的 nr 与向量 y 的长度相同

于 2017-01-12T19:03:25.830 回答