プロジェクトの 1 つで、一連のデータに対して線形判別分析を実行するように依頼されました。fisherlda 関数を備えた ALGLIB (C++ バージョン) を使用していますが、その使用方法を理解するための助けが必要です。
ユーザーは一連の 6 つの質問 (回答は 1 ~ 7 の数字) に答えます。これにより、例として {1,2,3,4,5,6} のデータ セットが得られます。次に、{0.765、0.895、1.345、2.456、0.789、5.678} など、それぞれ 6 つの値の 5 つのクラスがあります。fisher lda 関数は、2 次元の値の配列を取り、別の 1 次元の値の配列を返します (意味がわかりません)。
私が理解しているように、ユーザーの回答がどのクラスに最も適しているかを確認する必要がありますか?
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>=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);