• Main Page
  • Related Pages
  • Classes
  • Files
  • Examples
  • File List
  • File Members

Perceptron.cpp

Go to the documentation of this file.
00001 //===========================================================================
00042 //===========================================================================
00043 
00044 
00045 #include <ReClaM/Perceptron.h>
00046 
00047 
00048 Perceptron::Perceptron()
00049 {
00050 }
00051 
00052 Perceptron::~Perceptron()
00053 {
00054 }
00055 
00056 
00057 void Perceptron::init(Model& model)
00058 {
00059     SVM* svm = dynamic_cast<SVM*>(&model);
00060     if (svm == NULL) throw SHARKEXCEPTION("[Perceptron::init] model is not a valid SVM object");
00061 }
00062 
00063 void Perceptron::optimize(SVM& svm, const Array<double>& input, const Array<double>& target)
00064 {
00065     int i, ic = input.dim(0);
00066     bool err;
00067     int iter = 0;
00068 
00069     svm.SetTrainingData(input);
00070     for (i = 0; i <= ic; i++) svm.setParameter(i, 0.0);
00071 
00072     do
00073     {
00074         err = false;
00075         for (i = 0; i < ic; i++)
00076         {
00077             if (svm.model(input[i]) * target(i, 0) <= 0.0)
00078             {
00079                 svm.setParameter(i, svm.getParameter(i) + target(i, 0));
00080                 err = true;
00081             }
00082         }
00083         if (iter > 10000 * ic) break;   // probably non-separable data
00084         iter++;
00085     }
00086     while (err);
00087 }
00088 
00089 double Perceptron::optimize(Model& model, ErrorFunction& error, const Array<double>& input, const Array<double>& target)
00090 {
00091     SVM* svm = dynamic_cast<SVM*>(&model);
00092     if (svm == NULL) throw SHARKEXCEPTION("[Perceptron::optimize] model is not a valid SVM object");
00093 
00094     optimize(*svm, input, target);
00095     return 0.0;
00096 }
00097 
  • Shark Main Page
  • Array
  • Rng
  • LinAlg
  • FileUtil
  • EALib
  • MOO-EALib
  • ReClaM
  • Fuzzy
  • Mixture
  • Tutorials
  • FAQ