Home | Develop | Download | Contact
example_perceptron_kernel_gaussian_yinyang2.cpp
1 
58 #include <iostream>
59 #include <Pds/Ra>
60 #include <Pds/Ml>
61 
62 
63 int main(void)
64 {
66  Pds::Vector Yp;
67  Pds::Matrix F;
68  Pds::IterationConf Conf;
69  Conf.SetMaxIter(10000); Conf.Show=false;
70  unsigned int K=12;
71 
72  // Generating data
73  unsigned int L=1000;
74  Pds::Matrix X;
75  Pds::Vector Y;
76  Pds::Matrix G;
78 
79  Pds::Octave::XLabel="x_1";
80  Pds::Octave::YLabel="x_2";
81  Pds::Octave::Plot::PointsX2DY(X,Y,"testando.m","example_perceptron_kernel_gaussian_yinyang2_data.png");
82 
83  // Create Perceptron
84  Pds::Array<unsigned int> ID0,ID1;
85  std::vector<Pds::Matrix> Block=X.FindRowsBlock(Y);
86  Pds::Matrix G0=Pds::Clustering::Kmeans(Conf,Block[0],K,ID0);
87  Pds::Matrix G1=Pds::Clustering::Kmeans(Conf,Block[1],K,ID1);
88  std::vector<double> Sigma0=Pds::Clustering::KmeansSigma(Block[0],ID0);
89  std::vector<double> Sigma1=Pds::Clustering::KmeansSigma(Block[1],ID1);
90 
91  G=Pds::MergeVer({G0,G1});
92  Sigma0.insert(Sigma0.end() , Sigma1.begin() , Sigma1.end());
93 
94 
95  F=Pds::Kernel::Gaussian(X,G,Sigma0);
96 
97  Pds::Perceptron Neurona(Conf,F,Y);
98  Neurona.Print("\nNeurona:\n");
99 
100  // Predict training data
101  Yp=Neurona.Predict(F);
102 
103  // Metrics of training
104  Metrics = Pds::ClassificationMetrics::Calculate(0.5,Yp,Y);
105  Metrics.Print("\n");
106 
107  Pds::Octave::Plot::PointsX2DY(X,Yp,"testando.m","example_perceptron_kernel_gaussian_yinyang2_training.png");
108 
109  // Predict testing data
110  Pds::DataSet::Classification::LoadDataYinYang(L,X,Y); // Load new data
111 
112  F=Pds::Kernel::Gaussian(X,G,Sigma0);
113  Yp=Neurona.Predict(F);
114 
115  // Metrics testing
116  Metrics = Pds::ClassificationMetrics::Calculate(Metrics.Threshold,Yp,Y);
117  Metrics.Print("\n");
118 
119  Pds::Octave::Plot::PointsX2DY(X,Yp,"testando.m","example_perceptron_kernel_gaussian_yinyang2_testing.png");
120  return 0;
121 }
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: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::Matrix Kmeans(Pds::IterationConf &Conf, const std::vector< Pds::Matrix > &IMG, unsigned int K, Pds::Array< unsigned int > &IDMAP)
Calculo de los centroides de las muestras (pixels) en std::vector<Pds::Matrix> IMG.
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::vector< double > KmeansSigma(const Pds::Matrix &X, const Pds::Array< unsigned int > &ID)

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed