contrib/mul/clsfy/clsfy_builder_base.h

Go to the documentation of this file.
00001 #ifndef clsfy_builder_base_h_
00002 #define clsfy_builder_base_h_
00003 
00004 // Copyright: (C) 2000 British Telecommunications plc
00005 
00006 
00007 //:
00008 // \file
00009 // \brief Describe an abstract classifier
00010 // \author Ian Scott
00011 // \date 2000/05/10
00012 // \verbatim
00013 //  Modifications
00014 //  2 May 2001 IMS Converted to VXL
00015 // \endverbatim
00016 
00017 
00018 #include <vsl/vsl_binary_io.h>
00019 #include <vcl_vector.h>
00020 #include <vcl_string.h>
00021 #include <mbl/mbl_data_wrapper.h>
00022 #include <vnl/vnl_vector.h>
00023 
00024 
00025 class clsfy_classifier_base;
00026 
00027 
00028 //: Base for classes to build clsfy_classifier_base objects
00029 class clsfy_builder_base {
00030 
00031 public:
00032 
00033   // Dflt ctor
00034   clsfy_builder_base();
00035 
00036   // Destructor
00037   virtual ~clsfy_builder_base();
00038 
00039   //: Create empty model
00040   virtual clsfy_classifier_base* new_classifier() const = 0;
00041 
00042   //: Build model from data
00043   // Return the mean error over the training set.
00044   // For many classifiers, you may use nClasses==1 to
00045   // indicate a binary classifier
00046   virtual double build(clsfy_classifier_base& model,
00047                        mbl_data_wrapper<vnl_vector<double> >& inputs,
00048                        unsigned nClasses,
00049                        const vcl_vector<unsigned> &outputs) const = 0;
00050 
00051   //: Name of the class
00052   virtual vcl_string is_a() const;
00053 
00054   //: Name of the class
00055   virtual bool is_class(vcl_string const& s) const;
00056 
00057   //: Create a copy on the heap and return base class pointer
00058   virtual clsfy_builder_base* clone() const = 0;
00059 
00060   //: Print class to os
00061   virtual void print_summary(vcl_ostream& os) const = 0;
00062 
00063   //: Save class to binary file stream
00064   virtual void b_write(vsl_b_ostream& bfs) const = 0;
00065 
00066   //: Load class from binary file stream
00067   virtual void b_read(vsl_b_istream& bfs) = 0;
00068 };
00069 
00070 //: Allows derived class to be loaded by base-class pointer
00071 void vsl_add_to_binary_loader(const clsfy_builder_base& b);
00072 
00073 //: Binary file stream output operator for class reference
00074 void vsl_b_write(vsl_b_ostream& bfs, const clsfy_builder_base& b);
00075 
00076 //: Binary file stream input operator for class reference
00077 void vsl_b_read(vsl_b_istream& bfs, clsfy_builder_base& b);
00078 
00079 //: Stream output operator for class reference
00080 void vsl_print_summary(vcl_ostream& os,const clsfy_builder_base& b);
00081 
00082 //: Stream output operator for class pointer
00083 void vsl_print_summary(vcl_ostream& os,const clsfy_builder_base* b);
00084 
00085 //: Stream output operator for class reference
00086 vcl_ostream& operator<<(vcl_ostream& os,const clsfy_builder_base& b);
00087 
00088 //: Stream output operator for class pointer
00089 vcl_ostream& operator<<(vcl_ostream& os,const clsfy_builder_base* b);
00090 
00091 #endif // clsfy_builder_base_h_

Generated on Thu Jan 8 05:11:33 2009 for contrib/mul/clsfy by  doxygen 1.5.1