2015-07-27 5 views
0

Меня попросили провести линейный дискриминантный анализ набора данных для одного из моих проектов. Я использую 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); 

ответ

2

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^