Programa para el testeo de las funciones.Para compilar o código example_lda_2d.cpp:
g++ -static -o example_lda_2d example_lda_2d.cpp -lpdsmlmm -lpdsramm -lpdsspmm
Para executar o programa:
Retornando por consola:
----- LDA :
Lambda:
9.4017204746525 9.792373894639
V:
0.48750693238305 0.87302817868768
0.8731191160881 -0.48766976451004
W[0]:
-1.6002717696647 1.0014438993629 -0.016525001345288
W[1]:
-1.5922959815084 -0.51853946729161 0.84772731034858
W[2]:
-1.603368542761 -0.49287682343256 -0.87554761815149
Label[0]: 0
Label[1]: 1
Label[2]: 2
Tarining data:
Data of axes {0,1,2}
Discriminant functions:
Decision boundaries:
Regions
Código example_lda_2d.cpp:
#include <iostream>
#include <Pds/Ra>
#include <Pds/Ml>
int main(void)
{
unsigned int L=300;
unsigned int K=3;
Pds::Octave::MarkerSize=64;
Pds::Octave::YLimits=true;
Pds::Octave::XLimits=true;
Pds::Octave::DAspect=true;
Pds::Matrix X;
Pds::Vector Y,Ys;
Pds::Octave::Plot::ScatterX2DY(X,Y,"testando3d.m","example_lda_2d_data.png");
Lda.
Print(
"----- LDA :\n");
std::vector<Pds::Vector> W=Lda.
GetW();
for(unsigned int n=0;n<W.size();n++)
{
Pds::Octave::Plot::ScatterX2DYW(X,Y,W[n],"testando3d.m","example_lda_2d_w"+std::to_string(n)+".png");
}
Pds::Matrix Xt(10*L,2);
Xt.FillRandU(-1.5,1.5);
Pds::Octave::Plot::ScatterX2DY(Xt,Ys,"testando3d.m","example_lda_2d_class.png");
return 0;
}
La clase tipo Pds::LDA . Esta clase genera una matriz de Nlin lineas y 1 columna. Para usar incluir P...
double Predict(const Pds::Vector &x) const
Evalua el objeto de tipo Pds::LDA.
std::vector< Pds::Vector > GetW(void) const
Retorna un std::vector de vectores que representan los clasificadores.
void Print(std::string str="") const
Imprime en pantalla el contenido del LDA.
void LoadKNormal(unsigned int L, unsigned int K, Pds::Matrix &X, Pds::Vector &Y, double factor=0.70711)
Clasificación múltiple de datos.