我正在尝试使用caret
包对一些栅格数据进行分类。一切正常,RandomForest
我只想尝试 SVM 分类器,但出现错误。
数据从不同的栅格聚合(1x1 km,50cm 分辨率聚合到 2.5m,统计数据为 max、min、mean、median 和 std),存储在如下数据框中:
然后我使用以下代码缩放此数据(training_high_final 是训练表,第 1 列是“索引”,第 22 列是“类值”:
# scale and center data
thf_scaled <- as.data.frame(scale(training_high_final[,c(-1,-22)], center= T, scale = T))
# Reset Row Numbers
rownames(thf_scaled) <- seq(length=nrow(thf_scaled))
thf_scaled$index <- training_high_final$index
thf_scaled$id <- as.factor(training_high_final$classvalue)
缩放表如下所示: 缩放表
发生错误的反向特征消除的代码:
# RFE-Control
# for random forest
# ctrl_rfe <- rfeControl(method = "repeatedcv", number = 9, repeats= 5, functions = rfFuncs, allowParallel = T)
# for SVM
ctrl_rfe <- rfeControl(method = "repeatedcv", number = 9, repeats= 5, allowParallel = T)
sizes = c(1:20)
# RFE (Col 21 is index (not needed), Col 22 the classvalue)
rfe_high <- rfe(thf_scaled[,c(-21,-22)], thf_scaled[,22], sizes = sizes, rfeControl = ctrl_rfe, method="lssvmPoly")
结果:
> rfe_high <- rfe(thf_scaled[,c(-21,-22)], thf_scaled[,22], sizes = sizes, rfeControl = ctrl_rfe, method="lssvmPoly")
Error in { : task 1 failed - "missing value where TRUE/FALSE needed"
我之前尝试过更多变量(现在只有 20 个,在我有 ~80 个之前)并得到了错误
任务 1 失败 - “停止”。
有 170 个没有 NA 数据的训练样本。