首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >caret/rfe-错误:“x和y中应该有相同数量的样本”

caret/rfe-错误:“x和y中应该有相同数量的样本”
EN

Stack Overflow用户
提问于 2018-02-21 17:48:05
回答 2查看 2.9K关注 0票数 2

我的目标是与R执行交叉验证,第1-31列是功能,第32列是输出类。

我从.xls文件加载数据。但是我对rfeControl-function有严重的问题。请参考我的代码:

代码语言:javascript
运行
复制
install.packages('e1071')
library(e1071)
install.packages('readxl')
library(readxl)
library(rpart)
install.packages('randomForest')
library(randomForest)
install.packages('party')
library(party)
install.packages('mlbench')
library(mlbench)
install.packages('caret')
library(caret)
#----------------------------------------------------------
# Import Data
getwd()
setwd("working_directory_name")
df <- read_excel('test_data.xls')
#----------------------------------------------------------
# Get Information on your data (optional)
str(df)
table(df$F32)
#----------------------------------------------------------
install.packages('XLConnect')
library(XLConnect)
# Recursive Feature Selection Approach
control <- rfeControl(functions=rfFuncs, method="cv", number=5)
#x = as.vector(unlist(df[, 2:29]))
#y = as.vector(unlist(df[, 32])) 
# Run the algorithm (Features, Ground Truth, Testes SetSizes)
#results <- rfe(x, y, sizes=c(1:28), rfeControl=control)
results <- rfe(df[, 2:29], df[, 32], sizes=c(1:28), rfeControl=control)
# Visualize results for set sizes
print(results)
# List chosen features
predictors(results)
# plot the results
plot(results, type=c("g", "o"))

运行代码后的结果是:

控制中的

Fehler ( df,2:29,df,32,rfe.default= c(1:28),rfeControl = control):x和y中应该有相同数量的样本

我已经看过这些网站了:

  1. http://braziebrazie.blogspot.de/2015/08/caret-r-error-in-rfedefau-should-be.html
  2. R rfe function "caret" Package error: there should be the same number of samples in x and y
  3. R trying to get caret / rfe to work

1.中取消列出向量的建议对我不起作用。新的错误是:

Fehler in if (nrow(x) != length(y)) stop(“x和y中应该有相同数量的样本”):参数hat Länge 0

2.中的示例运行正常,没有任何问题:

代码语言:javascript
运行
复制
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)
plot(results, type=c("g", "o"))

在3.上面写着

y应为数字或因子向量

但是我如何将其定义为数值或因子向量呢?

这是xls文件格式:xls file format

也许问题出在我加载xls文件的方式上。

非常感谢您的建议和建议!

EN

回答 2

Stack Overflow用户

发布于 2018-08-15 06:41:21

也有同样的问题。将y转换为矩阵,它起作用了。

代码语言:javascript
运行
复制
results <- rfe(df[, 2:29], as.matrix(df[, 32]), sizes=c(1:28), rfeControl=control)
票数 6
EN

Stack Overflow用户

发布于 2018-04-05 09:58:49

修改对rfe的调用,如下所示:

代码语言:javascript
运行
复制
results <- rfe(df[, 2:29], df[[32]], sizes=c(1:28), rfeControl=control)

请注意从单[]到双[[]]大括号的更改

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48902732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档