Home | Develop | Download | Contact
example_perceptron_kernel_gaussian_yinyang.cpp
1 
84 #include <iostream>
85 #include <Pds/Ra>
86 #include <Pds/Ml>
87 
88 
89 int main(void)
90 {
92  Pds::Vector Yp;
93  Pds::Matrix F;
94  Pds::IterationConf Conf;
95  Conf.SetMaxIter(10000); Conf.Show=false;
96  double Sigma=0.1;
97 
98  // Generating data
99  unsigned int L=1000;
100  Pds::Matrix X;
101  Pds::Vector Y;
102  Pds::Matrix G;
104 
105  Pds::Octave::XLabel="x_1";
106  Pds::Octave::YLabel="x_2";
107  Pds::Octave::Plot::PointsX2DY(X,Y,"testando.m","example_perceptron_kernel_gaussian_yinyang_data.png");
108 
109  // Create Perceptron
110  G=Pds::MergeVer( {Pds::Clustering::Kmeans(Conf,X.GetRows(Pds::Find(Y)),60),
111  Pds::Clustering::Kmeans(Conf,X.GetRows(Pds::Find(1-Y)), 60)}
112  ); //Random centroids to Gaussian Kernel
113  F=Pds::Kernel::Gaussian(X,G,Sigma);
114 
115  Pds::Perceptron Neurona(Conf,F,Y);
116  Neurona.Print("\nNeurona:\n");
117 
118  // Evaluate training data
119  Yp=Neurona.Evaluate(F);
120 
121  // Metrics of training
122  Metrics = Pds::ClassificationMetrics::Calculate(0.5,Yp,Y);
123  Metrics.Print("\n");
124 
125  Pds::Octave::Plot::PointsX2DY(X,Yp,"testando.m","example_perceptron_kernel_gaussian_yinyang_training.png");
126 
127  // Evaluate testing data
128  Pds::DataSet::Classification::LoadDataYinYang(L,X,Y); // Load new data
129 
130  F=Pds::Kernel::Gaussian(X,G,Sigma);
131  Yp=Neurona.Evaluate(F);
132 
133  // Metrics testing
134  Metrics = Pds::ClassificationMetrics::Calculate(Metrics.Threshold,Yp,Y);
135  Metrics.Print("\n");
136 
137  Pds::Octave::Plot::PointsX2DY(X,Yp,"testando.m","example_perceptron_kernel_gaussian_yinyang_testing.png");
138  return 0;
139 }
La clase tipo Pds::ClassificationMetrics . Esta clase genera un bloque de datos para analizar curvas ...
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:63
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::Matrix Kmeans(Pds::IterationConf &Conf, const std::vector< Pds::Matrix > &Block, unsigned int K, Pds::Array< unsigned int > &IDMAP)
Calculo de los centroides.
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.
std::string YLabel
Texto correspondente a ylabel.
std::string XLabel
Texto correspondente a xlabel.
bool PointsX2DY(const Pds::Matrix &X, const Pds::Vector &Y, const std::string &octfilename, const std::string &imgfilename)
Plot de muestras en 2D en las columnas X, clasificadas de forma binaria con Y>=0.5,...

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed