【问题标题】:I Cant Train my Data Using SVM with Caret Train Function我无法使用带有插入符号训练功能的 SVM 训练我的数据
【发布时间】:2017-02-02 20:07:53
【问题描述】:

我正在构建一个具有因子变量但数字条目的模型。我将它们转换为数字。当我尝试使用 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。 我重新检查了数据。不存在缺失值。我需要帮助。

【问题讨论】:

  • 请至少包含您的数据子集,以使您的问题可重现。没有它,很难帮助你。看看help center。谢谢!
  • 实际数据的大小是多少?
  • 1.检查您的因子转换的结果。它可能无法正常工作。它不适用于您提供的数据。 2. 输入你的一些原始数据。这套太小了,无法测试。如果您不想使用您的数据,请尝试使用 GermanCredit 数据(包含在 caret 包中)或其他一些数据集来复制错误。

标签: r machine-learning svm r-caret


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-02-21
    • 2020-10-01
    • 1970-01-01
    • 2018-02-24
    • 2012-11-03
    • 2019-07-12
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多