Accord.net:多标签分类问题

时间:2017-05-05 12:53:58

标签: c# .net machine-learning multilabel-classification accord.net

我正在尝试从版本3.0.2升级我的多标签分类代码。到3.3.0。我做了升级,但现在分类结果似乎更糟糕了 - 算法无法比以前分类更多的实例。如果我的新代码中存在任何问题,请您告诉我。如何像以前一样使用高斯内核的估计参数?

旧代码:

var gauss = Gaussian.Estimate(inputs, Convert.ToInt32(inputs.GetLength(0) * 0.8));  

// Create the machine.
this.machine = new MultilabelSupportVectorMachine(inputs[0].Length, gauss, outputs[0].Length);
// Train the model.
var teacher = new MultilabelSupportVectorLearning(this.machine, inputs, outputs);
teacher.Algorithm = (svm, classInputs, classOutputs, i, j) => new SequentialMinimalOptimization(svm, classInputs, classOutputs) { UseComplexityHeuristic = true, CacheSize = 1000 };
teacher.SubproblemFinished += SubproblemFinished;
var error = teacher.Run(true);

// Save the model.
this.machine.Save(modelPath);

新代码:

var gauss = Gaussian.Estimate(inputs, Convert.ToInt32(inputs.GetLength(0) * 0.8));
// Create the machine.
this.machine = new MultilabelSupportVectorMachine<Gaussian>(inputs[0].Length, gauss, outputs[0].Length);


// Create the multi-class learning algorithm for the machine
var teacher = new MultilabelSupportVectorLearning<Gaussian>(this.machine)
{
// Configure the learning algorithm to use SMO to train the
//  underlying SVMs in each of the binary class subproblems.
Learner = (param) => new SequentialMinimalOptimization<Gaussian>()
{
            // Estimate a suitable guess for the Gaussian kernel's parameters.
            // This estimate can serve as a starting point for a grid search.
                    UseKernelEstimation = true,
                    UseComplexityHeuristic = true,
                    CacheSize = 1000                    
                }               
            };
            teacher.ParallelOptions.MaxDegreeOfParallelism = 1;
            // Learn a machine
            machine = teacher.Learn(inputs, outputs);
            Serializer.Save(machine, modelPath);

提前致谢!

0 个答案:

没有答案