为什么matlab中的`libsvm`给了我所有的预测

时间:2016-02-15 06:56:54

标签: matlab libsvm

我在svmR使用matlab matdat <- readMat(con = "data.mat") svm.model <- svm(x = matdat$normalize.X, y = matdat$Yt) pred <- predict(svm.model, newdata = matdat$normalize.X) pred <- sapply(pred, function(x){ifelse(x > 0, 1, -1)}) sum(pred == matdat$Yt)/length(matdat$Yt)

我的R代码工作正常,这给了我一些合理的预测。

load('data.mat')
model2 = svmtrain(Yt, normalize_X,'-s 3 -c 1 -t 2 -p 0.1');
[predicted_label,accuracy, decision_values] = svmpredict(Yt, normalize_X, model2);

但是,我的matlab代码给了我关于训练数据的所有1个预测。

svm{e1071}

我检查了e1071的默认参数,我认为这与matlab版本一致。

我在R中使用libsvm包和版本1.6-7以及官方页面中的最新版mapstd

那么,我该怎么做才能找到原因,任何想法?

====更新====

在将数据提供给数据中的libsvm之前,我应用{{1}}来规范化在R中自动完成的数据。然后我在R和Matlab中获得了相同的训练模型。

1 个答案:

答案 0 :(得分:1)

在Matlab中,您使用的是-s 3选项,它是回归,而不是分类。 作为起点,不要假设有关默认参数的任何内容,只需在R和Matlab中明确指定参数。