Линейный дискриминантный анализ с использованием alglib

Меня попросили провести линейный дискриминантный анализ набора данных для одного из моих проектов. Я использую ALGLIB (версия C ++), которая имеет функцию fisherlda, но мне нужна помощь, чтобы понять, как ее использовать.

Пользователь отвечает на 6 вопросов (число ответов от 1 до 7), что дает мне пример набора данных, например, {1,2,3,4,5,6}. Затем у меня есть 5 классов по 6 значений, например, {0.765, 0.895, 1.345, 2.456, 0.789, 5.678}.
Функция fisher lda принимает двумерный массив значений и возвращает еще один одномерный массив значений (что я понятия не имею, что они имеют в виду).

Насколько я понимаю, мне нужно понять, к какому классу лучше всего подходят ответы пользователей?

Будем весьма благодарны за любую помощь в понимании LDA и / или как я могу использовать эту функцию.

РЕДАКТИРОВАТЬ:

Вот определение функции, которую я пытаюсь использовать:

/*************************************************************************
Multiclass Fisher LDA

Subroutine finds coefficients of linear combination which optimally separates
training set on classes.

INPUT PARAMETERS:
XY          -   training set, array[0..NPoints-1,0..NVars].
First NVars columns store values of independent
variables, next column stores number of class (from 0
to NClasses-1) which dataset element belongs to. Fractional
values are rounded to nearest integer.
NPoints     -   training set size, NPoints>=0
NVars       -   number of independent variables, NVars>=1
NClasses    -   number of classes, NClasses>=2OUTPUT PARAMETERS:
Info        -   return code:
* -4, if internal EVD subroutine hasn't converged
* -2, if there is a point with class number
outside of [0..NClasses-1].
* -1, if incorrect parameters was passed (NPoints<0,
NVars<1, NClasses<2)
*  1, if task has been solved
*  2, if there was a multicollinearity in training set,
but task has been solved.
W           -   linear combination coefficients, array[0..NVars-1]

-- ALGLIB --
Copyright 31.05.2008 by Bochkanov Sergey
*************************************************************************/
void fisherlda(const real_2d_array &xy, const ae_int_t npoints, const ae_int_t nvars, const ae_int_t nclasses, ae_int_t &info, real_1d_array &w);

0

Решение

Вы используете функцию fisherlda, которая является реализацией алгоритма LDA.

LDA (Линейный Дискриминантный Анализ) предназначен для поиска линейной комбинации функций, которая лучше всего характеризует или разделяет два или более классов объектов или событий.

Предположим, что строка y = wx (w, x здесь обозначают матрицу), поэтому данный результат fisherlad представляет собой 1d массив коэффициентов, который равен w. Затем вы можете использовать эту строку, чтобы определить, какому классу принадлежат ответы.

2

Другие решения


По вопросам рекламы [email protected]