Мои данные дали странные результаты с svm на R из пакета e1071, поэтому я попытался проверить, может ли R svm генерировать тот же результат, что и WEKA (или python), поскольку я использовал WEKA в прошлом.
Я погуглил вопрос и нашел тот, который вызывает ту же путаницу со мной, но без ответа. Это вопрос.
Так что я надеюсь, что смогу получить здесь ответ.
Чтобы упростить задачу, я также использую набор данных диафрагмы и обучаю модель (SMO в WEKA и svm из пакета R e1071), используя все данные диафрагмы, и тестирую ее на себе.
Параметры 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. Я попытался прочитать инструкции и хотел сделать все параметры идентичными, но многие параметры мне не кажутся сопоставимыми.
Спасибо.