Home | Develop | Download | Contact
example_logisticregression_ce_svm_hard.cpp

Programa para el testeo de las funciones.Para compilar o código example_logisticregression_ce_svm_hard.cpp:

g++ -static -o example_logisticregression_ce_svm_hard example_logisticregression_ce_svm_hard.cpp -lpdsmlmm -lpdsramm -lpdsspmm

Para executar o programa:

./example_logisticregression_ce_svm_hard

Retornando por consola:

  W0: 0.0037733819812223        -1      -0.020282310732759

┌──────────────────────────────┐
│    CE                        │
│    IterationConf init data   │
├──────────────────────────────┤
│           Alpha: 0.1         │
│          Lambda: 0.1         │
│   MinError ΔW/W: 1.0000e-07  │
│         MaxIter: 1000        │
└──────────────────────────────┘
┌──────────────────────────────┐
│            Iter: 1000        │
│           Alpha: 0.001       │
│  LastError ΔW/W: 6.8187e-06  │
└──────────────────────────────┘
┌──────────────────────────────┐
│    CE                        │
│    IterationConf end data    │
├──────────────────────────────┤
│           Alpha: 0.001       │
│  LastError ΔW/W: 6.8187e-06  │
│        LastIter: 1000        │
└──────────────────────────────┘
 W_ce: 0.00029598207052271      -0.036805352866569      -0.028390896649131

┌──────────────────────────────┐
│    SVM                       │
│    IterationConf init data   │
├──────────────────────────────┤
│           Alpha: 0.1         │
│          Lambda: 0.1         │
│   MinError ΔW/W: 1.0000e-07  │
│         MaxIter: 1000        │
└──────────────────────────────┘
┌──────────────────────────────┐
│            Iter: 1000        │
│           Alpha: 0.001       │
│  LastError ΔW/W: 4.9802e-05  │
│ Cost Func Error: 1.0357e+00  │
└──────────────────────────────┘
┌──────────────────────────────┐
│    SVM                       │
│    IterationConf end data    │
├──────────────────────────────┤
│           Alpha: 0.001       │
│  LastError ΔW/W: 4.9802e-05  │
│        LastIter: 1000        │
└──────────────────────────────┘
W_svm: 0.0039810069812223       -0.85608162230586       -0.041708055765726


 IG_ce: 0.00026042863760706
IG_svm: 5.8431398858694e-05
Classification - cross entropy


Classification - svm

Código example_logisticregression_ce_svm_hard.cpp:

#include <iostream>
#include <Pds/Ra>
#include <Pds/Ml>
int main(void)
{
Pds::Matrix X;
Pds::Vector Y;
unsigned int L=1000;
Pds::Vector Yp;
Pds::Vector W0(X.Ncol()+1), W;
// Create W0 using training data
W0.T().Print(" W0: ");
std::cout<<std::endl;
Pds::Octave::YLimits=true;
Pds::Octave::XLabel="x_1";
Pds::Octave::YLabel="x_2";
Pds::Octave::Plot::PointsX2DYW(X,Y,W0,"testando_dat.m","example_logisticregression_ce_svm_hard_dat.png");
// Create W using Pds::LogisticModel::FittingGradientCrossEntropy()
Conf.Show=true; Conf.SetMinError(1e-06); Conf.SetAlpha(0.1); Conf.SetLambda(0.1);
W.T().Print(" W_ce: ");
std::cout<<std::endl;
double IG_ce=Pds::InformationGain(Y,Y.FindRowsBlock(Yp));
Pds::Octave::YLimits=true;
Pds::Octave::Plot::PointsX2DYW(X,Y,W,"testando.m","example_logisticregression_ce_svm_hard_ce.png");
// Create W using Pds::LogisticModel::FittingGradientSVM()
Conf.Show=true; Conf.SetMinError(1e-07); Conf.SetAlpha(0.1); Conf.SetLambda(0.1);
W.T().Print("W_svm: ");
std::cout<<std::endl;
double IG_svm=Pds::InformationGain(Y,Y.FindRowsBlock(Yp));
Pds::Octave::YLimits=true;
Pds::Octave::Plot::PointsX2DYW(X,Y,W,"testando.m","example_logisticregression_ce_svm_hard_svm.png");
// Information gain
std::cout<<std::endl;
std::cout<<" IG_ce: "<<IG_ce<<std::endl;
std::cout<<"IG_svm: "<<IG_svm<<std::endl;
return 0;
}
La clase tipo Pds::IterationConf . Esta clase genera una matriz de Nlin lineas y 1 columna....
bool SetLambda(double Lambda)
Coloca el valor lambda.
bool SetAlpha(double Alpha)
Coloca el valor alpha.
bool SetMinError(double MinError)
Coloca el valor MinError.
void LoadDataBand2(unsigned int L, Pds::Matrix &X, Pds::Vector &Y)
Clasificacion de datos separados por mas de una curva.
Pds::Vector FittingGradientCrossEntropy(Pds::IterationConf &Conf, const Pds::Matrix &X, const Pds::Vector &Y, const Pds::Vector &W0)
Gradiente descendente para sigmoide.
Pds::Vector FittingGradientSVM(Pds::IterationConf &Conf, const Pds::Matrix &X, const Pds::Vector &Y, const Pds::Vector &W0)
Gradiente descendente para sigmoide.
Pds::Vector Classify(const Pds::Vector &W, const Pds::Matrix &X)
Calculo del resultado del clasificador.
Pds::Vector GetW0MeanSquareMethod(const Pds::Matrix &X)
Obtiene de forma rapida un vector inicial para usar en regresion logistica.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed