我正在尝试"插入"从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)是特征的预测因子。
我设置了哪个参数错误?
答案 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的长度相同