Меня попросили провести линейный дискриминантный анализ набора данных для одного из моих проектов. Я использую ALGLIB (версия на C++), которая имеет функцию fisherlda, но мне нужна помощь в понимании того, как ее использовать.Линейный дискриминантный анализ с использованием alglib
Пользователь отвечает на набор из 6 вопросов (ответы - это число от 1 до 7), которое дает мне пример набора данных, например. {1,2,3,4,5,6}. Затем я имею 5 классов по 6 значений, например, {0,765, 0,895, 1,345, 2,456, 0,789, 5,667}. Функция fisher lda принимает 2-мерный массив значений и возвращает еще один массив значений (что я понятия не имею, что они означают).
Как я понимаю, мне нужно выяснить, к какому классу ответы пользователей лучше всего подходят?
Любая помощь в понимании LDA и/или как я могу использовать эту функцию.
EDIT:
Вот определение функции Я пытаюсь использовать:
/*************************************************************************
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>=2
OUTPUT 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);