【发布时间】:2013-05-09 03:44:46
【问题描述】:
我想在 MATLAB 中使用 LibSVM 进行一类分类。
我想训练数据并使用交叉验证,但我不知道如何标记异常值。
例如,如果我有这些数据:
trainData = [1,1,1; 1,1,2; 1,1,1.5; 1,1.5,1; 20,2,3; 2,20,2; 2,20,5; 20,2,2];
labelTrainData = [-1 -1 -1 -1 0 0 0 0];
(前四个是1类的例子,其他四个是异常值的例子,只是为了交叉验证)
我使用这个来训练模型:
model = svmtrain(labelTrainData, trainData , '-s 2 -t 0 -d 3 -g 2.0 -r 2.0 -n 0.5 -m 40.0 -c 0.0 -e 0.0010 -p 0.1 -v 2' );
我不确定使用哪个值来标记 1 类数据以及对异常值使用什么值。有人知道怎么做吗?
提前致谢。 -杰西卡
【问题讨论】:
-
查看以下帖子。 one-class svm,顾名思义,你的训练集中只有一个类stackoverflow.com/questions/14588967/one-class-svm-libsvm
-
谢谢,不过,我还有下一个疑问。所以不可能对一类/异常值使用交叉验证?我使用了 weka 包装器,如果我使用标有“?”的实例他们只是在训练过程中被忽略了。
-
另外,哪个标签对一个班级来说是正确的?只是任何数字,还是我应该严格使用 -1 或特定值?
-
任何数字都可以作为标签(尝试使用不同的标签,看看是否会改变你的分类器)......虽然不确定交叉验证。
标签: matlab label libsvm outliers cross-validation