|
最近在做的项目需要用到SVM来分类,发现SvmType为OneClass时可以正常运行,而SvmType为CSvc时则会在TrainAuto()时提示“尝试除以零”的错误,SvmKernelType都是Linear,发现不管怎么修改参数,都会在TrainAuto()时提示“尝试除以零”。我用的是最新的emgucv-windows-universal 3.0.0.2032的版本。
using (Emgu.CV.ML.SVM.Params p = new Emgu.CV.ML.SVM.Params(SvmType.OneClass, SvmKernelType.Linear, 0, 64, 0.1, 0, 0.5, 0, classweight.Mat, new MCvTermCriteria(100, 0.0001)))
using (Emgu.CV.ML.SVM svm = new Emgu.CV.ML.SVM(p))
{
Emgu.CV.ML.TrainData traindata = new Emgu.CV.ML.TrainData(newFeatures, DataLayoutType.RowSample, newResponses);
svm.TrainAuto(traindata, 5);
上面这段可以正常运行,下面的代码则出错:
using (Emgu.CV.ML.SVM.Params p = new Emgu.CV.ML.SVM.Params(SvmType.CSvc, SvmKernelType.Linear, 0, 64, 0.1, 10, 0.5, 0, classweight.Mat, new MCvTermCriteria(100, 0.0001)))
using (Emgu.CV.ML.SVM svm = new Emgu.CV.ML.SVM(p))
{
Emgu.CV.ML.TrainData traindata = new Emgu.CV.ML.TrainData(newFeatures, DataLayoutType.RowSample, newResponses);
svm.TrainAuto(traindata, 5);
|
|