gpt4 book ai didi

c# - 在 Accord.net 框架中使用 Liblinear 进行多重分类

转载 作者:行者123 更新时间:2023-11-30 16:08:19 25 4
gpt4 key购买 nike

我需要使用 Liblinear 实现多分类分类器。 Accord.net 机器学习框架提供了所有 Liblinear 属性,除了 Crammer 和 Singer 的多类分类公式。 This is the process .

最佳答案

学习多类机器的常用方法是使用 MulticlassSupportVectorLearning class .这个类(class)可以教授一对一的机器,然后可以使用投票或淘汰策略来查询这些机器。

因此,这是一个关于如何对多个类进行线性训练的示例:

// Let's say we have the following data to be classified
// into three possible classes. Those are the samples:
//
double[][] inputs =
{
// input output
new double[] { 0, 1, 1, 0 }, // 0
new double[] { 0, 1, 0, 0 }, // 0
new double[] { 0, 0, 1, 0 }, // 0
new double[] { 0, 1, 1, 0 }, // 0
new double[] { 0, 1, 0, 0 }, // 0
new double[] { 1, 0, 0, 0 }, // 1
new double[] { 1, 0, 0, 0 }, // 1
new double[] { 1, 0, 0, 1 }, // 1
new double[] { 0, 0, 0, 1 }, // 1
new double[] { 0, 0, 0, 1 }, // 1
new double[] { 1, 1, 1, 1 }, // 2
new double[] { 1, 0, 1, 1 }, // 2
new double[] { 1, 1, 0, 1 }, // 2
new double[] { 0, 1, 1, 1 }, // 2
new double[] { 1, 1, 1, 1 }, // 2
};

int[] outputs = // those are the class labels
{
0, 0, 0, 0, 0,
1, 1, 1, 1, 1,
2, 2, 2, 2, 2,
};

// Create a one-vs-one multi-class SVM learning algorithm
var teacher = new MulticlassSupportVectorLearning<Linear>()
{
// using LIBLINEAR's L2-loss SVC dual for each SVM
Learner = (p) => new LinearDualCoordinateDescent()
{
Loss = Loss.L2
}
};

// Learn a machine
var machine = teacher.Learn(inputs, outputs);

// Obtain class predictions for each sample
int[] predicted = machine.Decide(inputs);

// Compute classification accuracy
double acc = new GeneralConfusionMatrix(expected: outputs, predicted: predicted).Accuracy;

您还可以尝试使用一对一策略来解决多类决策问题。在这种情况下,您可以使用 MultilabelSupportVectorLearning教学算法而不是上面显示的多类算法。

关于c# - 在 Accord.net 框架中使用 Liblinear 进行多重分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29619258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com