【问题标题】:Svm missing value where TRUE/FALSE needed in RR 中需要 TRUE/FALSE 的 Svm 缺失值
【发布时间】:2015-06-28 23:32:20
【问题描述】:

我正在尝试实现二进制 svm。我收到以下错误消息:

Error in if (any(co)) { : missing value where TRUE/FALSE needed

对于以下代码:

library(e1071)
dataset <- read.csv("C:/Users/Backup/Desktop/pos.csv")
# Subset the dataset dataset to only 2 labels and 2 features
dataset.part = subset(dataset, label != 1)
dataset.part$label = factor(dataset.part$label)


# Fit svm model
fit = svm(label ~ ., data=dataset.part, type='C-classification',   kernel='linear')

我在这行代码中遇到了错误:

# Fit svm model
fit = svm(label ~ ., data=dataset.part, type='C-classification', kernel='linear')

我是 R 的初学者,我不知道如何解决这个问题。谁能帮帮我?

【问题讨论】:

  • 您在哪一行得到错误?您应该创建一个minimal reproducible example,以便我们帮助解决问题。这意味着您需要包含示例数据,否则我们不知道您向这些函数提供了什么。
  • 我在这行代码中遇到了错误(# Fit svm model fit = svm(label ~ ., data=dataset.part, type='C-classification', kernel='linear ') ) 至于数据,我正在为这些函数提供正数据和负数据,数据是数字的。
  • 好吧,然后 git 去掉所有额外的代码行。它们与问题无关。此外,请按照所提供链接上的建议提供与您自己的数据集相似的数据集,以重现错误。

标签: r svm


【解决方案1】:

我遇到了同样的问题,并且能够在我的一行中将其缩小到无限值。我的建议是首先对数据进行预处理。就我而言,我可以忽略 na 和无限值

# First cast Inf to NA
is.na(df) <- sapply(df, is.infinite)
# Now just omit NA
na.omit(df)

但是,对于解决一般问题,@MrFlick 的解决方案是一个很好的解决方案。如果一切都失败了,最简单的方法可能是对数据集进行二分搜索,看看哪些数据点导致了问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 2016-11-06
    • 1970-01-01
    • 2018-07-12
    • 2014-06-06
    • 1970-01-01
    • 2019-03-07
    相关资源
    最近更新 更多