On m'a demandé d'effectuer une analyse discriminante linéaire sur un ensemble de données pour un de mes projets. J'utilise ALGLIB (version C++) qui a une fonction fisherlda mais j'ai besoin d'aide pour comprendre comment l'utiliser.Analyse discriminante linéaire utilisant alglib
L'utilisateur répond à un ensemble de 6 questions (les réponses sont un nombre compris entre 1 et 7), ce qui me donne un exemple de jeu de données de par ex. {1,2,3,4,5,6}. J'ai alors 5 classes de 6 valeurs chacune. {0,765, 0,895, 1,345, 2,456, 0,789, 5,668}. La fonction fisher lda prend un tableau de valeurs bidimensionnel et renvoie un autre tableau de valeurs 1d (que je n'ai aucune idée de ce que cela signifie). Si je comprends bien, j'ai besoin de voir à quelle classe répond le mieux les utilisateurs?
Toute aide pour comprendre l'ADL et/ou comment utiliser cette fonction serait grandement appréciée.
EDIT:
est ici la définition de la fonction que je suis en train d'utiliser:
/*************************************************************************
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);