Home | Develop | Download | Contact
test_working_newhb.cpp
1 
20 #include <iostream>
21 #include <Pds/Ra>
22 #include <Pds/Ml>
23 #include <Pds/Sp>
24 
25 
26 #include "extra_newhb.h"
27 
28 // ./test/test_working_newhb
29 int main(void)
30 {
31  //Pds::Ra::Randomize();
32  Pds::IterationConf Conf;
33 
34  Pds::Octave::DAspect=true;
35  Pds::Octave::YLimits=true;
36 
37  // Generating data
38  // Data 1
39  //Pds::Matrix X(Pds::Ra::TextFormat,"../test/hard-data-x.txt");
40  //Pds::Vector Y(Pds::Ra::TextFormat,"../test/hard-data-y.txt");
41  //X=X.SubRowMatrix(X.MeanInCols());
42 
43  // Data 2
44  unsigned int L=1000; Pds::Matrix X; Pds::Vector Y;
46 
47  Pds::Octave::XLabel="x_1";
48  Pds::Octave::YLabel="x_2";
49  Pds::Octave::Plot::PointsX2DY(X,Y,"testando.m","test_working_newhb.png");
50 
51  unsigned int N=128;
52  double b=2.0;
53  Pds::Vector w1=Pds::LinSpace(-b,b,N);
54  Pds::Vector w2=Pds::LinSpace(-b,b,N);
55  Pds::Matrix MS(N,N);
56  Pds::Matrix CE(N,N);
57  Pds::Matrix IG(N,N);
58  Pds::Matrix IS(N,N);
59  double val;
60 
61  Pds::Vector w({0.25,0.0,0.0});
62 
63  w.Set(1,-0.5); w.Set(2, 0.5);
64  Pds::Octave::Plot::PointsX2DYW(X,Y,w,"testando_w.m","test_working_w0.png");
65  w.Set(1, 0.5); w.Set(2,-0.5);
66  Pds::Octave::Plot::PointsX2DYW(X,Y,w,"testando_w.m","test_working_w1.png");
67  w.Set(1, 1.0); w.Set(2, 1.0);
68  Pds::Octave::Plot::PointsX2DYW(X,Y,w,"testando_w.m","test_working_w2.png");
70  w.T().Print("w:\n"); w.Normalize();
71  Pds::Octave::Plot::PointsX2DYW(X,Y,w,"testando_w.m","test_working_w3.png");
72  w.T().Print("w:\n");
73 
74  double d=Pds::DataSet::InterDistance(X);
75  double dinv=1.0/d;
76  std::cout<<" d:\t"<<d<<"\n";
77  std::cout<<"1/d:\t"<<dinv<<"\n";
78 
79  for(unsigned int i=0;i<N;i++)
80  for(unsigned int j=0;j<N;j++)
81  {
82  w.Set(1,w1[i]);
83  w.Set(2,w2[j]);
84 
86  IG.SetRaw(i,j,val);
87 
88  val=Pds::LogisticModel::CostMeanSquare( dinv*w/w.Norm(),X,Y);
89  MS.SetRaw(i,j,val);
90 
91  val=Pds::LogisticModel::CostCrossEntropy( 10*dinv*w/w.Norm(),X,Y);
92  CE.SetRaw(i,j,val);
93 
94  val=Pds::LogisticModel::CostXqEntropy( w,X,Y,q_factor_val); //w*(100/w.Norm())
95  IS.SetRaw(i,j,val);
96  }
97 
98  // No treinar bias
99 
100  Pds::Matrix W1,W2;
101  Pds::Meshgrid (w1,w2,W1,W2);
102 
103  Pds::Octave::DAspect=false;
104  Pds::Octave::Plot::SurfC(W1,W2,MS,"testando_ms.m","ms_matrix.png");
105  Pds::Octave::Plot::SurfC(W1,W2,CE,"testando_ce.m","ce_matrix.png");
106  Pds::Octave::Plot::SurfC(W1,W2,(1-IG),"testando_ig.m","ig_matrix.png");
107  Pds::Octave::Plot::SurfC(W1,W2,IS,"testando_is.m","is_matrix.png");
108 
109  return 0;
110 }
La clase tipo Pds::IterationConf . Esta clase genera una matriz de Nlin lineas y 1 columna....
double InterDistance(const Pds::Matrix &X)
Calcula la interdistancia entre las muestras de , donde cada muestra de tiene dimensión .
void LoadDataBand(unsigned int L, Pds::Matrix &X, Pds::Vector &Y)
Clasificacion de datos separados por mas de una curva.
Pds::Vector FittingLogitMeanSquare(Pds::IterationConf &Conf, const Pds::Matrix &X, const Pds::Vector &Y, double Delta=0.0001)
Calculo de pesos.
double CostCrossEntropy(const Pds::Vector &W, const Pds::Matrix &X, const Pds::Vector &Y)
Calculo de pesos.
double CostMeanSquare(const Pds::Vector &W, const Pds::Matrix &X, const Pds::Vector &Y)
Calculo de pesos.
double CostInformationGain(const Pds::Vector &W, const Pds::Matrix &X, const Pds::Vector &Y)
Calculo de costo.
double CostXqEntropy(const Pds::Vector &W, const Pds::Matrix &X, const Pds::Vector &Y, double q)
Definition: extra_newhb.h:32

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed