【发布时间】:2018-12-01 12:43:50
【问题描述】:
我的目标是使用 R 执行交叉验证。第 1-31 列是特征,第 32 列是输出类。
我从 .xls 文件加载数据。
但是我对 rfeControl 功能有严重的问题。请看我的代码:
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"))
运行代码后的结果是:
rfe.default(df[, 2:29], df[, 32], sizes = 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 中的样本数") : Argument hat Länge 0
2.中的例子没有任何问题:
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 文件的方式。
非常感谢您的建议和建议!
【问题讨论】:
-
您的列是否都具有相同数量的行?这些行中是否有 NaN 值?这是您可以检查的第一件事。
-
是的,所有列的行数都相同。任何一行都没有 NaN 值。
-
为我工作,请查看第一个答案:stackoverflow.com/questions/48902732/…
标签: r validation r-caret