Home | Develop | Download | Contact
example_perceptron_kernel_gaussian_gmm.cpp
1 
59 #include <iostream>
60 #include <Pds/Ra>
61 #include <Pds/Ml>
62 
63 
64 int main(void)
65 {
67  Pds::Vector Yp;
68  Pds::Matrix F;
69  Pds::IterationConf Conf;
70  Conf.SetMaxIter(10000); Conf.Show=false;
71  unsigned int K=10;
72 
73  // Generating data
74  unsigned int L=1000;
75  Pds::Matrix X;
76  Pds::Vector Y;
77  Pds::Matrix G;
79 
80  Pds::Octave::XLabel="x_1";
81  Pds::Octave::YLabel="x_2";
82  Pds::Octave::Plot::PointsX2DY(X,Y,"testando.m","example_perceptron_kernel_gaussian_gmm_data.png");
83 
84  std::vector<Pds::Matrix> Block=X.FindRowsBlock(Y);
85  Pds::DataGMM Dat0=Pds::Clustering::GMM(Conf,Block[0],K,1.0);
86  Pds::DataGMM Dat1=Pds::Clustering::GMM(Conf,Block[1],K,1.0);
87  Dat1.Mu.insert (Dat1.Mu.end() , Dat0.Mu.begin() , Dat0.Mu.end());
88  Dat1.Sinv.insert(Dat1.Sinv.end(), Dat0.Sinv.begin(), Dat0.Sinv.end());
89 
90  // Create Perceptron
91  F=Pds::Kernel::Gaussian(X,Dat1.Mu,Dat1.Sinv);
92 
93  Pds::Perceptron Neurona(Conf,F,Y);
94  Neurona.Print("\nNeurona:\n");
95 
96  // Predict training data
97  Yp=Neurona.Predict(F);
98 
99  // Metrics of training
100  Metrics = Pds::ClassificationMetrics::Calculate(0.5,Yp,Y);
101  Metrics.Print("\n");
102 
103  Pds::Octave::Plot::PointsX2DY(X,Yp,"testando.m","example_perceptron_kernel_gaussian_gmm_training.png");
104 
105  // Predict testing data
106  Pds::DataSet::Classification::LoadDataYinYang(L,X,Y); // Load new data
107 
108  F=Pds::Kernel::Gaussian(X,Dat1.Mu,Dat1.Sinv);
109  Yp=Neurona.Predict(F);
110 
111  // Metrics testing
112  Metrics = Pds::ClassificationMetrics::Calculate(Metrics.Threshold,Yp,Y);
113  Metrics.Print("\n");
114 
115  Pds::Octave::Plot::PointsX2DY(X,Yp,"testando.m","example_perceptron_kernel_gaussian_gmm_testing.png");
116  return 0;
117 }
La clase tipo Pds::ClassificationMetrics . Esta clase genera un bloque de datos para analizar curvas ...
La clase tipo Pds::DataGMM . Esta clase genera un bloque de datos para analizar curvas de aprendisaje...
Definition: DataGMM.hpp:60
std::vector< Pds::Vector > Mu
Definition: DataGMM.hpp:67
std::vector< Pds::Matrix > Sinv
Definition: DataGMM.hpp:70
La clase tipo Pds::IterationConf . Esta clase genera una matriz de Nlin lineas y 1 columna....
La clase tipo Pds::Perceptron . Esta clase genera una matriz de Nlin lineas y 1 columna....
Definition: Perceptron.hpp:64
static Pds::ClassificationMetrics Calculate(double Threshold, const Pds::Vector &Ypredict, const Pds::Vector &Yactual)
Crea un objeto Dat de tipo Pds::ClassificationMetrics.
void Print(std::string str="")
Imprime en pantalla los datos de la estructura tipo Pds::ClassificationMetrics.
bool SetMaxIter(unsigned int MaxIter)
Coloca el valor MaxIter.
Pds::DataGMM GMM(Pds::IterationConf &Conf, const Pds::Matrix &X, const Pds::DataGMM &In)
Itera un Gaussian Mixture Model (GMM) (pp. 13). Tenemos como conocimiento de estrada,...
void LoadDataYinYang(unsigned int L, Pds::Matrix &X, Pds::Vector &Y)
Clasificacion de datos separados por mas de una curva.
Pds::Matrix Gaussian(const Pds::Matrix &X, const Pds::Matrix &G, double Sigma=1.0)
Crea una nueva matriz de "features" kernelizando de forma gaussiana.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed