Go to the documentation of this file.00001
00002 #ifndef clsfy_classifier_1d_h_
00003 #define clsfy_classifier_1d_h_
00004
00005
00006
00007
00008
00009 #include <vcl_vector.h>
00010 #include <vnl/vnl_vector.h>
00011 #include <mbl/mbl_data_wrapper.h>
00012 #include <vsl/vsl_binary_io.h>
00013
00014
00015
00016
00017
00018
00019
00020 class clsfy_classifier_1d
00021 {
00022 public:
00023
00024
00025 clsfy_classifier_1d();
00026
00027
00028 virtual ~clsfy_classifier_1d();
00029
00030
00031
00032
00033 virtual unsigned classify(double input) const;
00034
00035
00036 virtual vnl_vector<double> params() const = 0;
00037
00038
00039 virtual void set_params(const vnl_vector<double>& p)=0;
00040
00041
00042
00043 virtual void class_probabilities(vcl_vector<double> &outputs, double input) const = 0;
00044
00045
00046 virtual void classify_many(vcl_vector<unsigned> &outputs, mbl_data_wrapper<double> &inputs) const;
00047
00048
00049
00050
00051 virtual double log_l(double input) const = 0;
00052
00053
00054 virtual unsigned n_classes() const = 0;
00055
00056
00057 virtual bool operator==(const clsfy_classifier_1d& x) const = 0;
00058
00059
00060 virtual vcl_string is_a() const;
00061
00062
00063 virtual bool is_class(vcl_string const& s) const;
00064
00065
00066 virtual clsfy_classifier_1d* clone() const = 0;
00067
00068
00069 virtual void print_summary(vcl_ostream& os) const = 0;
00070
00071
00072 virtual void b_write(vsl_b_ostream& bfs) const = 0;
00073
00074
00075 virtual void b_read(vsl_b_istream& bfs) = 0;
00076 };
00077
00078
00079 void vsl_add_to_binary_loader(const clsfy_classifier_1d& b);
00080
00081
00082 void vsl_b_write(vsl_b_ostream& bfs, const clsfy_classifier_1d& b);
00083
00084
00085 void vsl_b_read(vsl_b_istream& bfs, clsfy_classifier_1d& b);
00086
00087
00088 vcl_ostream& operator<<(vcl_ostream& os, const clsfy_classifier_1d& b);
00089
00090
00091 vcl_ostream& operator<<(vcl_ostream& os, const clsfy_classifier_1d* b);
00092
00093
00094 inline void vsl_print_summary(vcl_ostream& os, const clsfy_classifier_1d& b)
00095 { os << b;}
00096
00097
00098 inline void vsl_print_summary(vcl_ostream& os, const clsfy_classifier_1d* b)
00099 { os << b;}
00100
00101
00102
00103
00104
00105 double clsfy_test_error(const clsfy_classifier_1d &classifier,
00106 mbl_data_wrapper<double> & test_inputs,
00107 const vcl_vector<unsigned> & test_outputs);
00108
00109 #endif // clsfy_classifier_1d_h_