/**
* @file KCGPRegression.h
* @brief Gaussian Process Regression for Classification
* @author Erik Rodner
* @date 12/03/2009
*/
#ifndef KCGPREGRESSIONINCLUDE
#define KCGPREGRESSIONINCLUDE
#include "vislearning/classifier/classifierbase/KernelClassifier.h"
#include "vislearning/math/kernels/ParameterizedKernel.h"
#include "vislearning/regression/regressionbase/RegressionAlgorithmKernel.h"
#include "vislearning/regression/regressionbase/TeachWithInverseKernelMatrix.h"
#undef ROADWORKS
#define ROADWORKS fthrow(NICE::Exception, "Persistent interface not implemented!");
namespace OBJREC
{
/** Gaussian Process Regression for Classification */
class KCGPRegression : public KernelClassifier
{
protected:
RegressionAlgorithmKernel *regressionAlgorithm;
NICE::Vector y;
public:
/** simple constructor */
KCGPRegression ( const NICE::Config *conf, Kernel *kernel = NULL, const std::string & section = "KCGPRegression" );
/** copy constructor */
KCGPRegression ( const KCGPRegression & src );
/** simple destructor */
virtual ~KCGPRegression();
/** teach the classifier with a kernel matrix and the corresponding class labels @param y ! */
void teach ( KernelData *kernelData, const NICE::Vector & y );
/** classify an example by using its kernel values with the training set,
be careful with the order in @param kernelVector */
virtual ClassificationResult classifyKernel ( const NICE::Vector & kernelVector, double kernelSelf ) const;
/** clone this object */
KCGPRegression *clone() const;
void restore ( std::istream&, int )
{
ROADWORKS
};
void store ( std::ostream&, int ) const
{
ROADWORKS
};
void clear()
{
ROADWORKS
};
bool getOptimizeKernelParameters () const;
};
}
#undef ROADWORKS
#endif