#ifndef NUMCLASSIFYUNSUPERVISED_HH #define NUMCLASSIFYUNSUPERVISED_HH //////////////////////////////////////////////////////////////////////////// //! author="Robert Crida" //! lib=NumClassify //! date="30/1/1998" //! userlevel=Normal //! file="amma/PatternRec/FuncTools/Classify/NumClassifyUnsupervised.hh" //! docentry="Pattern Recognition.Clustering" //! rcsid="$Id: NumClassifyUnsupervised.hh,v 1.19 2000/10/04 13:01:22 ees1cg Exp $" #include "amma/Num/NumClassify.hh" #include "amma/Num/NumClassifyUnsupervisedB.hh" // -------------------------------------------------------------------------- // ********** NumClassifyUnsupervisedC ************************************ // -------------------------------------------------------------------------- //: Handle base class for unsupervised classifiers/clustering algorithms. // // Handle class for unsupervised learning classifiers. The clustering // algorithms are trained using a list of feature vectors. class NumClassifyUnsupervisedC : public NumClassifyC { public: NumClassifyUnsupervisedC (); //: Default constructor NumClassifyUnsupervisedC (istream &in); //: Constructs from stream NumClassifyUnsupervisedC (const NumClassifyUnsupervisedC &oth); //: Copy constructor NumClassifyUnsupervisedC (NumClassifyUnsupervisedBC &oth); //: Constructs from base class NumClassifyUnsupervisedC Copy () const; //: Makes a deep copy static BooleanT IsA(const DPEntityC &pb) { return dynamic_cast(&pb.Body()) != 0; } //: Check if an object is a NumFuncConstant. NumClassifyUnsupervisedC(const DPProcessBaseC &pb) : NumClassifyC(pb) { if(!IsA(pb)) Invalidate(); } //: Base class constructor. protected: inline NumClassifyUnsupervisedBC & Body() { return static_cast(DPEntityC::Body()); } //: Access body. inline const NumClassifyUnsupervisedBC & Body() const { return static_cast(DPEntityC::Body()); } //: Access body. public: inline void Initialise (UIntT numClasses, const DListC &trainX) { Body().Initialise (numClasses,trainX); } //: Initialises the clusters //!param: numClasses - number of clusters that will be set up //!param: trainX - training samples used to determine initial centers inline void Cluster (const DListC &trainX) { Body().Cluster (trainX); } //: Used to train the classifier by clustering on unlabelled samples }; //: Provides >> and << operators to streams NUM_IO_OPERATORS(NumClassifyUnsupervisedC); #endif