Changeset 722 for trunk/yat/classifier
- Timestamp:
- Dec 27, 2006, 9:49:11 PM (17 years ago)
- Location:
- trunk/yat/classifier
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/yat/classifier/EnsembleBuilder.cc
r720 r722 25 25 #include "DataLookup2D.h" 26 26 #include "KernelLookup.h" 27 #include "Sampler.h" 27 28 #include "SubsetGenerator.h" 28 29 #include "SupervisedClassifier.h" … … 35 36 36 37 EnsembleBuilder::EnsembleBuilder(const SupervisedClassifier& sc, 37 SubsetGenerator& subset)38 : mother_(sc), subset_(subset)38 const Sampler& sampler) 39 : mother_(sc),subset_(new SubsetGenerator(sampler,sc.data())) 39 40 { 40 41 } … … 44 45 for(size_t i=0; i<classifier_.size(); i++) 45 46 delete classifier_[i]; 47 delete subset_; 46 48 } 47 49 48 50 void EnsembleBuilder::build(void) 49 51 { 50 for(u_long i=0; i<subset_ .size();++i) {52 for(u_long i=0; i<subset_->size();++i) { 51 53 SupervisedClassifier* classifier= 52 mother_.make_classifier(subset_ .training_data(i),53 subset_ .training_target(i));54 mother_.make_classifier(subset_->training_data(i), 55 subset_->training_target(i)); 54 56 classifier->train(); 55 57 classifier_.push_back(classifier); … … 75 77 { 76 78 result.clear(); 77 result.reserve(subset_ .target().nof_classes());78 for(size_t i=0; i<subset_ .target().nof_classes();i++)79 result.reserve(subset_->target().nof_classes()); 80 for(size_t i=0; i<subset_->target().nof_classes();i++) 79 81 result.push_back(std::vector<statistics::Averager>(data.columns())); 80 82 … … 82 84 try { 83 85 const KernelLookup& kernel = dynamic_cast<const KernelLookup&>(data); 84 for(u_long k=0;k<subset_ .size();k++) {85 KernelLookup kernel_peter(kernel,subset_ .training_index(k),true);86 for(u_long k=0;k<subset_->size();k++) { 87 KernelLookup kernel_peter(kernel,subset_->training_index(k),true); 86 88 classifier(k).predict(kernel_peter,prediction); 87 89 … … 92 94 } 93 95 catch (std::bad_cast) { 94 for(u_long k=0;k<subset_ .size();k++) {96 for(u_long k=0;k<subset_->size();k++) { 95 97 classifier(k).predict(data,prediction); 96 98 for(size_t i=0; i<prediction.rows();i++) … … 108 110 validation_result_.clear(); 109 111 110 validation_result_.reserve(subset_ .target().nof_classes());111 for(size_t i=0; i<subset_ .target().nof_classes();i++)112 validation_result_.push_back(std::vector<statistics::Averager>(subset_ .target().size()));112 validation_result_.reserve(subset_->target().nof_classes()); 113 for(size_t i=0; i<subset_->target().nof_classes();i++) 114 validation_result_.push_back(std::vector<statistics::Averager>(subset_->target().size())); 113 115 114 116 utility::matrix prediction; 115 for(u_long k=0;k<subset_ .size();k++) {116 classifier(k).predict(subset_ .validation_data(k),prediction);117 for(u_long k=0;k<subset_->size();k++) { 118 classifier(k).predict(subset_->validation_data(k),prediction); 117 119 118 120 for(size_t i=0; i<prediction.rows();i++) 119 121 for(size_t j=0; j<prediction.columns();j++) { 120 validation_result_[i][subset_ .validation_index(k)[j]].122 validation_result_[i][subset_->validation_index(k)[j]]. 121 123 add(prediction(i,j)); 122 124 } -
trunk/yat/classifier/EnsembleBuilder.h
r720 r722 33 33 namespace classifier { 34 34 35 class Sampler; 35 36 class SubsetGenerator; 36 37 class DataLookup2D; … … 48 49 /// Constructor. 49 50 /// 50 EnsembleBuilder(const SupervisedClassifier&, SubsetGenerator&);51 EnsembleBuilder(const SupervisedClassifier&, const Sampler&); 51 52 52 53 /// … … 90 91 91 92 private: 92 93 EnsembleBuilder(const EnsembleBuilder&); 94 const EnsembleBuilder& operator=(const EnsembleBuilder&); 95 96 93 97 const SupervisedClassifier& mother_; 94 SubsetGenerator &subset_;98 SubsetGenerator* subset_; 95 99 std::vector<SupervisedClassifier*> classifier_; 96 100 std::vector<std::vector<statistics::Averager> > validation_result_; -
trunk/yat/classifier/NBC.cc
r680 r722 51 51 52 52 53 const DataLookup2D& NBC::data(void) const 54 { 55 return data_; 56 } 57 58 53 59 SupervisedClassifier* 54 60 NBC::make_classifier(const DataLookup2D& data, const Target& target) const -
trunk/yat/classifier/NBC.h
r680 r722 60 60 virtual ~NBC(); 61 61 62 const DataLookup2D& data(void) const; 63 64 62 65 SupervisedClassifier* make_classifier(const DataLookup2D&, 63 66 const Target&) const; -
trunk/yat/classifier/NCC.cc
r720 r722 64 64 } 65 65 66 const DataLookup2D& NCC::data(void) const 67 { 68 return data_; 69 } 66 70 67 71 SupervisedClassifier* -
trunk/yat/classifier/NCC.h
r720 r722 77 77 const utility::matrix& centroids(void) const; 78 78 79 const DataLookup2D& data(void) const; 80 79 81 SupervisedClassifier* make_classifier(const DataLookup2D&, 80 82 const Target&) const; … … 98 100 utility::matrix centroids_; 99 101 const statistics::Distance& distance_; 102 103 // data_ has to be of type DataLookup2D to accomodate both 104 // MatrixLookup and MatrixLookupWeighted 100 105 const DataLookup2D& data_; 101 106 -
trunk/yat/classifier/SVM.cc
r720 r722 98 98 } 99 99 100 const DataLookup2D& SVM::data(void) const 101 { 102 return *kernel_; 103 } 104 105 100 106 double SVM::kernel_mod(const size_t i, const size_t j) const 101 107 { -
trunk/yat/classifier/SVM.h
r720 r722 66 66 /// 67 67 virtual ~SVM(); 68 69 const DataLookup2D& data(void) const; 68 70 69 71 /// -
trunk/yat/classifier/SupervisedClassifier.h
r680 r722 59 59 60 60 /// 61 /// @brief Access to the training data 62 /// 63 virtual const DataLookup2D& data(void) const =0; 64 65 66 /// 61 67 /// An interface for making new classifier objects. This function 62 68 /// allows for specification at run-time of which classifier to … … 70 76 71 77 78 79 /// 80 /// Generate output values for a data set 81 /// 82 virtual void predict(const DataLookup2D&, utility::matrix&) const =0; 83 84 72 85 /// 73 86 /// Train the classifier. 74 87 /// 75 88 virtual bool train()=0; 76 77 ///78 /// Generate output values for a data set79 ///80 virtual void predict(const DataLookup2D&, utility::matrix&) const =0;81 89 82 90
Note: See TracChangeset
for help on using the changeset viewer.