我正在构建一个基于此paper第5页的线性问题的玩具数据集,以便使用插入符号的RFE + SVM和rbf内核来测试特征选择。但是,当RFE完成时,我会在每次bootstrap迭代时收到警告,并显示以下消息:"在data.row.names(row.names,rowsi,i)中:某些row.names重复:"后跟许多行号,直到输出被截断。
这是因为引导程序可能正在选择带有替换的样本,因此会复制引导数据中的行,或者是否存在其他问题?任何建议表示赞赏(请原谅人工数据集的懒惰实现)。
library(caret)
################
# 1. Building dataset
################
set.seed(1)
n.samples <- 500
y <- round(runif(n = n.samples, min=0, max=1))
data <- matrix(nrow=n.samples, ncol=202)
for(i in 1:n.samples){
toss <- runif(n=1, min=0, max=1)
if(toss <= 0.7) {
for(j in 1:3){
data[i,j] <- y[i]*rnorm(n = 1, mean = i, sd = 1)
}
for(j in 4:6){
data[i,j] <- rnorm(n = 1, mean = 0, sd = 1)
}
} else {
for(j in 1:3){
data[i,j] <- rnorm(n=1, mean=0, sd=1)
}
for(j in 4:6){
data[i,j] <- y[i]*rnorm(n=1, mean=i-3, sd = 1)
}
}
for(j in 7:202){
data[i,j] <- rnorm(n = 1, mean = 0, sd = 20)
}
}
colnames(data) <- c(paste("s", 1:6, sep = ""), paste('ns', 7:202, sep=''))
rownames(data) <- paste('sample', 1:n.samples, sep='')
################
# 2. Perform SVM - RFE
################
set.seed(1)
rfe.control.settings <- rfeControl(functions = caretFuncs,
method = 'boot',
number = 30,
verbose = TRUE)
svm.fit <- rfe(x=data,
y=y,
sizes=c(1,2,3,4),
rfeControl = rfe.control.settings,
method = 'svmRadial') #passing options to train / caretFuncs
答案 0 :(得分:1)
我遇到了同样的问题,为我修复的问题是将数据类从matrix
更改为data.frame
。