我不能使用带有Caret Train功能的SVM训练我的数据

时间:2016-09-25 12:06:04

标签: r machine-learning svm r-caret

我正在构建一个具有因子变量但数字条目的模型。我将它们转换为数字。当我尝试使用SVM径向内核构建模型时,我收到了一些我不理解的奇怪消息。以下是我的所作所为。

Subset of data
class  ac_000       ad_000  ag_007
neg     2130706438  280     25896
neg     228         100     292936
pos     42328       856     51190
neg     24          24      0
neg     370         346     0
pos     1534        1388    794698

factorconvert <- function(f){as.numeric(levels(f))[f]} 
DF[, 2:4] <- lapply(DF[, 2:4], factorconvert) 

SVM
ctrl<-trainControl(method="repeatedcv"),
repeats=5,
summaryFunction=twoClassSummary,
classProbs=TRUE)

Train and Tune the SVM
svm.tune <- train(x=trainX, y= trainData$Class,method = "svmRadial",
tuneLength = 9, preProc =c("center","scale"),metric="ROC",trControl=ctrl)

Error in if (any(co)) { : missing value where TRUE/FALSE needed In
addition: Warning message: In FUN(newX[, i], ...) : NAs introduced by
coercion.

any(is.any(DF)).

我还使用na.omit()删除了数据中的所有NA。 我重新检查了数据。没有缺失值。我需要帮助。

1 个答案:

答案 0 :(得分:0)

如果您直接想要将数据集中的字符串转换为数字形式而不对列进行分解,则可能会发生这种情况。我想您可能希望在使用“UITableView”转换后检查您的数据,并检查第一列是否包含任何NA值。 如果这可以解决您的问题,请告诉我。