R rfe功能"插入符号"包装错误:x和y应该有相同数量的样品

时间:2015-05-25 15:35:22

标签: r r-caret rfe

我正在尝试"插入"从here获取的包,我一直收到此错误

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

我设置了哪个参数错误?

3 个答案:

答案 0 :(得分:0)

有一种惯例,即行是观察值,列是要素。您向<table class="table table-bordered" style="margin: 0;"> <col width="100"> <col width="100"> <thead> ... </thead> <tbody> ... </tbody> </table> 提供 x 参数的方式意味着您有2901个观察值,这会导致15个结果不匹配。对数据使用转置函数rfe(如果它当然有15列)。

不应将t向量称为预测变量。它是因变量结果。第一个参数是预测变量的data.frame。

答案 1 :(得分: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

答案 2 :(得分:0)

rfe(x, y,sizes = subsets, rfeControl = ctrl)

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