Мне нужно реализовать множественный классификатор классификации, используя Liblinear. Платформа машинного обучения Accord.net предоставляет все свойства Liblinear, за исключением формулировки Краммера и Зингера для многоклассовой классификации. Это процесс.
множественная классификация с использованием Liblinear в Accord.net Framework
Ответы (1)
Обычный способ изучения многоклассовой машины — использование класса MulticlassSupportVectorLearning. . Этот класс может обучать машины один на один, которые затем можно опрашивать, используя либо стратегии голосования, либо стратегии исключения.
Таким образом, вот пример того, как линейное обучение может быть выполнено для нескольких классов:
// 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;
Вы также можете попытаться решить проблему многоклассового решения, используя стратегию «один против остальных». В этом случае вместо алгоритма мульти- первый класс показан выше.
person
Cesar
schedule
14.04.2015
Большое спасибо. Я протестировал его, и он отлично работал. извините, но у меня есть еще один вопрос, который так важен для меня. как я могу реализовать это параллельно?
- person vahid ziaiyan; 19.04.2015
Хммм... Этап обучения уже сделан параллельно. Задача с несколькими классами разбивается на ряд задач с бинарными решениями, и каждое бинарное решение решается в отдельном потоке. Если у вас этого не происходит, то, пожалуйста, дайте мне знать, и я проверю!
- person Cesar; 19.04.2015