C# Линейный дискриминантный анализ с помощью Alglib

Предположим, у меня есть набор данных с 10 классами. Каждый класс содержит 3 балла в 3D:

Class 1: (1,2,3),(4,5,6),(7,8,9)
Class 2: (2,3,4),(5,6,7),(8,9,10)
.
.
Class 10: (10,15,20),(10,11,19),(4,8,9)

Как я могу определить, принадлежит ли класс X к одному из перечисленных выше классов, используя Alglib LDA (или любую другую бесплатную библиотеку LDA)?

Пример кода будет оценен.

1 ответ

Решение

Через некоторое время я наконец понял это:

static public double[,] Test()
    {
        // This example is for points in 3D.
        // The forth variable is the class label. In this case 2 classes: 0 and 1.
        double[,] xy = new double[,]
        {
        { 4,2,1, 0 }, { 2,4,2, 0 }, { 2,3,3, 0 }, { 3,6,4, 0 }, { 4,4,5, 0 },
        { 9,10,10, 1 }, { 6,8,11, 1 }, { 9,5,12, 1 }, { 8,7,9, 1 }, { 10,8,10, 1 }
        };

        int NPoints = 10;
        int NVars = 3; // 1 for 1 dimension, 2 for 2D and so on...
        int NClasses = 2;

        int info = 0;
        double[,] w = new double[0, 0];

        alglib.lda.fisherldan(xy, NPoints, NVars, NClasses, ref info, ref w);

        return w; // The projection vector/s.
    }
Другие вопросы по тегам