Caret 的 SVM 表现异常

Caret's SVM behaving strangely

我想创建一个玩具二维数据集,以可视化 SVM 算法的性能。我制作了一个完全可分离的数据集:

n <- 200;

d<-data.frame(x=runif(n), y=runif(n))

d$class[-1 + 3 * d$x < d$y] <- "1"
d$class[-1 + 3 * d$x > d$y] <- "2"

但是,我不明白我在 运行 行时收到的警告:

library(caret)

train(class~., data=d, method='svmLinear', tuneGrid=data.frame(C=1))

方法returns很多警告,全部类型:

  23: In data.row.names(row.names, rowsi, i) :
  some row.names duplicated: 3,4,10,12,14,16,18,22,24,27,30,34,35,38,39,45,47,52,54,56,57,64,67,72,74,76,78,81,83,84,87,88,91,92,94,99,103,108,109,111,113,115,117,118,120,121,123,128,129,131,135,137,138,140,141,143,145,146,148,153,164,171,173,178,181,187,189,191,193,194,198 --> row.names NOT used

此外,

谁能解释一下这世界上到底发生了什么?

嗯,我不确定是什么导致了这些警告。但是当我使用其他方法使用如下训练函数来拟合模型时:

train(x=d[, c("x", "y")], y=factor(d$class), method='svmLinear', tuneGrid=data.frame(C=1)

我没有收到任何警告。这两种方法的性能非常相似。

您的模型没有任何问题并且工作正常。您可以忽略该警告。

此问题已在插入符号 github 页面的 issue 410 下提交。这个问题现在已经解决,当 cran 上有新版本(高于 6.0-70 的版本)时将得到修复。或者您可以从 github 下载新版本。