【发布时间】:2017-02-24 07:39:08
【问题描述】:
我的数据使用 e1071 包中的 R 上的 svm 生成了奇怪的结果,因此我尝试检查 R svm 是否可以生成与 WEKA(或 python)相同的结果,因为我过去一直在使用 WEKA。
我用谷歌搜索了这个问题,发现一个与我有完全相同的困惑但没有答案的问题。 This is the question.
所以我希望我能在这里得到答案。
为了让事情变得更简单,我还使用了 iris 数据集,并使用整个 iris 数据训练了一个模型(WEKA 中的 SMO,以及来自 R 包 e1071 的 svm),并对其自身进行测试。
WEKA 参数:
weka.classifiers.functions.SMO -C 1.0 -L 0.001 -P 1.0E-12 -N 0 -V 10 -W 1 -K "weka.classifiers.functions.supportVector.RBFKernel -G 0.01 -C 250007"
除默认外,我将内核更改为 RBFKernel 以使其与 R 功能一致。
结果是:
a b c <-- classified as
50 0 0 | a = Iris-setosa
0 46 4 | b = Iris-versicolor
0 7 43 | c = Iris-virginica
R 脚本:
library(e1071)
model <- svm(iris[,-5], iris[,5], kernel="radial", epsilon=1.0E-12)
res <- predict(model, iris[,-5])
table(pred = res, true = iris[,ncol(iris)])
结果是:
true
pred setosa versicolor virginica
setosa 50 0 0
versicolor 0 48 2
virginica 0 2 48
我不是机器学习的人,所以我猜测这两种方法的默认参数非常不同。例如,e1071 的默认值为 0.01 epsilon,而 WEKA 的默认值为 1.0E-12。我试图通读手册,想让所有参数都相同,但很多参数似乎无法与我相提并论。
谢谢。
【问题讨论】:
标签: r machine-learning svm weka