Changeset 704
- Timestamp:
- Dec 18, 2006, 5:01:41 PM (16 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/test/crossvalidation_test.cc
r680 r704 117 117 std::vector<double> t_value(4,0); 118 118 std::vector<double> v_value(4,0); 119 cv_test.reset(); 120 while(cv_test.more()) { 121 122 const classifier::DataLookup2D& tv_view=cv_test.training_data(); 123 const classifier::Target& tv_target=cv_test.training_target(); 124 const std::vector<size_t>& tv_index=cv_test.training_index(); 125 const classifier::DataLookup2D& test_view=cv_test.validation_data(); 126 const classifier::Target& test_target=cv_test.validation_target(); 127 const std::vector<size_t>& test_index=cv_test.validation_index(); 119 for(u_long k=0;k<cv_test.size();k++) { 120 121 const classifier::DataLookup2D& tv_view=cv_test.training_data(k); 122 const classifier::Target& tv_target=cv_test.training_target(k); 123 const std::vector<size_t>& tv_index=cv_test.training_index(k); 124 const classifier::DataLookup2D& test_view=cv_test.validation_data(k); 125 const classifier::Target& test_target=cv_test.validation_target(k); 126 const std::vector<size_t>& test_index=cv_test.validation_index(k); 128 127 129 128 for (size_t i=0; i<test_index.size(); i++) { … … 148 147 std::vector<size_t> t_class_count(3,0); 149 148 std::vector<size_t> t_class_count2(3,0); 150 cv_training.reset(); 151 while(cv_training.more()) { 152 const classifier::DataLookup2D& t_view=cv_training.training_data(); 153 const classifier::Target& t_target=cv_training.training_target(); 154 const std::vector<size_t>& t_index=cv_training.training_index(); 155 const classifier::DataLookup2D& v_view=cv_training.validation_data(); 156 const classifier::Target& v_target=cv_training.validation_target(); 157 const std::vector<size_t>& v_index=cv_training.validation_index(); 149 for(u_long l=0;l<cv_training.size();l++) { 150 const classifier::DataLookup2D& t_view=cv_training.training_data(l); 151 const classifier::Target& t_target=cv_training.training_target(l); 152 const std::vector<size_t>& t_index=cv_training.training_index(l); 153 const classifier::DataLookup2D& v_view=cv_training.validation_data(l); 154 const classifier::Target& v_target=cv_training.validation_target(l); 155 const std::vector<size_t>& v_index=cv_training.validation_index(l); 158 156 159 157 if (test_index.size()+tv_index.size()!=target.size() … … 194 192 sample_count_test(tv_sample_count,error,ok); 195 193 196 cv_training.next();197 194 } 198 195 sample_count_test(v_sample_count,error,ok); … … 204 201 205 202 206 cv_test.next();207 203 } 208 204 sample_count_test(test_sample_count,error,ok); -
trunk/test/ensemble_test.cc
r680 r704 84 84 classifier::SubsetGenerator cv(sampler,kernel_lookup); 85 85 *error << "create ensemble" << std::endl; 86 cv.reset();87 86 classifier::EnsembleBuilder ensemble(svm,cv); 88 87 *error << "build ensemble" << std::endl; 89 cv.reset();90 88 ensemble.build(); 91 89 -
trunk/yat/classifier/EnsembleBuilder.cc
r680 r704 48 48 void EnsembleBuilder::build(void) 49 49 { 50 subset_.reset(); 51 while(subset_.more()) { 50 for(u_long i=0; i<subset_.size();++i) { 52 51 SupervisedClassifier* classifier= 53 mother_.make_classifier(subset_.training_data( ),54 subset_.training_target( ));52 mother_.make_classifier(subset_.training_data(i), 53 subset_.training_target(i)); 55 54 classifier->train(); 56 55 classifier_.push_back(classifier); 57 subset_.next();58 56 } 59 57 } … … 63 61 std::vector<std::vector<statistics::Averager> >& result) 64 62 { 65 subset_.reset();66 67 63 result.clear(); 68 64 result.reserve(subset_.target().nof_classes()); … … 70 66 result.push_back(std::vector<statistics::Averager>(data.columns())); 71 67 72 size_t k=0;73 68 utility::matrix prediction; 74 69 try { 75 70 const KernelLookup& kernel = dynamic_cast<const KernelLookup&>(data); 76 while(subset_.more()) {77 KernelLookup kernel_peter(kernel,subset_.training_index( ),true);78 classifier(k ++).predict(kernel_peter,prediction);71 for(u_long k=0;k<subset_.size();k++) { 72 KernelLookup kernel_peter(kernel,subset_.training_index(k),true); 73 classifier(k).predict(kernel_peter,prediction); 79 74 80 75 for(size_t i=0; i<prediction.rows();i++) 81 76 for(size_t j=0; j<prediction.columns();j++) 82 77 result[i][j].add(prediction(i,j)); 83 subset_.next();84 78 } 85 79 } 86 80 catch (std::bad_cast) { 87 while(subset_.more()) {88 classifier(k ++).predict(data,prediction);81 for(u_long k=0;k<subset_.size();k++) { 82 classifier(k).predict(data,prediction); 89 83 for(size_t i=0; i<prediction.rows();i++) 90 84 for(size_t j=0; j<prediction.columns();j++) 91 85 result[i][j].add(prediction(i,j)); 92 86 93 subset_.next();94 87 } 95 88 } … … 101 94 EnsembleBuilder::validate(void) 102 95 { 103 subset_.reset();104 96 validation_result_.clear(); 105 97 … … 108 100 validation_result_.push_back(std::vector<statistics::Averager>(subset_.target().size())); 109 101 110 size_t k=0;111 102 utility::matrix prediction; 112 while(subset_.more()) {113 classifier(k ++).predict(subset_.validation_data(),prediction);103 for(u_long k=0;k<subset_.size();k++) { 104 classifier(k).predict(subset_.validation_data(k),prediction); 114 105 115 106 for(size_t i=0; i<prediction.rows();i++) 116 107 for(size_t j=0; j<prediction.columns();j++) { 117 validation_result_[i][subset_.validation_index( )[j]].108 validation_result_[i][subset_.validation_index(k)[j]]. 118 109 add(prediction(i,j)); 119 } 120 121 subset_.next(); 110 } 122 111 } 123 112 return validation_result_; -
trunk/yat/classifier/SubsetGenerator.cc
r680 r704 42 42 SubsetGenerator::SubsetGenerator(const Sampler& sampler, 43 43 const DataLookup2D& data) 44 : f_selector_(NULL), sampler_(sampler), state_(0),weighted_(false)44 : f_selector_(NULL), sampler_(sampler), weighted_(false) 45 45 { 46 46 assert(target().size()==data.columns()); … … 80 80 const DataLookup2D& data, 81 81 FeatureSelector& fs) 82 : f_selector_(&fs), sampler_(sampler), state_(0),weighted_(false)82 : f_selector_(&fs), sampler_(sampler), weighted_(false) 83 83 { 84 84 assert(target().size()==data.columns()); … … 92 92 const MatrixLookup* ml = dynamic_cast<const MatrixLookup*>(&data); 93 93 if (ml){ 94 for ( reset(); more(); next()){94 for (size_t k=0; k<size(); k++){ 95 95 96 training_target_.push_back(Target(target(),training_index( )));97 validation_target_.push_back(Target(target(),validation_index( )));96 training_target_.push_back(Target(target(),training_index(k))); 97 validation_target_.push_back(Target(target(),validation_index(k))); 98 98 // training data with no feature selection 99 99 const MatrixLookup* train_data_all_feat = 100 ml->training_data(training_index( ));100 ml->training_data(training_index(k)); 101 101 // use these data to create feature selection 102 102 assert(train_data_all_feat); 103 f_selector_->update(*train_data_all_feat, training_target( ));103 f_selector_->update(*train_data_all_feat, training_target(k)); 104 104 // get features 105 105 features_.push_back(f_selector_->features()); … … 109 109 // Dynamically allocated. Must be deleted in destructor. 110 110 training_data_.push_back(new MatrixLookup(*ml,features_.back(), 111 training_index( )));111 training_index(k))); 112 112 validation_data_.push_back(new MatrixLookup(*ml,features_.back(), 113 validation_index( )));113 validation_index(k))); 114 114 } 115 115 } … … 118 118 const MatrixLookupWeighted* ml = 119 119 dynamic_cast<const MatrixLookupWeighted*>(&data); 120 if (ml){ 121 for (reset(); more(); next()){ 122 123 training_target_.push_back(Target(target(),training_index())); 124 validation_target_.push_back(Target(target(),validation_index())); 120 if (ml){ 121 for (u_long k=0; k<size(); k++){ 122 training_target_.push_back(Target(target(),training_index(k))); 123 validation_target_.push_back(Target(target(),validation_index(k))); 125 124 // training data with no feature selection 126 125 const MatrixLookupWeighted* train_data_all_feat = 127 ml->training_data(training_index( ));126 ml->training_data(training_index(k)); 128 127 // use these data to create feature selection 129 f_selector_->update(*train_data_all_feat, training_target( ));128 f_selector_->update(*train_data_all_feat, training_target(k)); 130 129 // get features 131 130 features_.push_back(f_selector_->features()); … … 135 134 training_data_.push_back(new MatrixLookupWeighted(*ml, 136 135 features_.back(), 137 training_index( )136 training_index(k) 138 137 )); 139 138 validation_data_.push_back(new MatrixLookupWeighted(*ml, 140 139 features_.back(), 141 validation_index( )140 validation_index(k) 142 141 )); 143 142 } … … 147 146 const KernelLookup* kernel = dynamic_cast<const KernelLookup*>(&data); 148 147 if (kernel){ 149 for ( reset(); more(); next()){150 training_target_.push_back(Target(target(),training_index( )));151 validation_target_.push_back(Target(target(),validation_index( )));148 for (u_long k=0; k<size(); k++){ 149 training_target_.push_back(Target(target(),training_index(k))); 150 validation_target_.push_back(Target(target(),validation_index(k))); 152 151 const DataLookup2D* matrix = kernel->data(); 153 152 // dynamically allocated must be deleted 154 153 const DataLookup2D* training_matrix = 155 matrix->training_data(training_index( ));154 matrix->training_data(training_index(k)); 156 155 if (matrix->weighted()){ 157 156 const MatrixLookupWeighted& ml = 158 157 dynamic_cast<const MatrixLookupWeighted&>(*matrix); 159 f_selector_->update(MatrixLookupWeighted(ml,training_index( ),false),160 training_target( ));158 f_selector_->update(MatrixLookupWeighted(ml,training_index(k),false), 159 training_target(k)); 161 160 } 162 161 else { 163 162 const MatrixLookup& ml = 164 163 dynamic_cast<const MatrixLookup&>(*matrix); 165 f_selector_->update(MatrixLookup(ml,training_index( ), false),166 training_target( ));164 f_selector_->update(MatrixLookup(ml,training_index(k), false), 165 training_target(k)); 167 166 } 168 167 std::vector<size_t> dummie=f_selector_->features(); … … 175 174 176 175 // Dynamically allocated. Must be deleted in destructor. 177 training_data_.push_back(kl->training_data(training_index( )));178 validation_data_.push_back(kl->validation_data(training_index( ),179 validation_index( )));176 training_data_.push_back(kl->training_data(training_index(k))); 177 validation_data_.push_back(kl->validation_data(training_index(k), 178 validation_index(k))); 180 179 assert(kl); 181 180 delete kl; … … 194 193 assert(validation_data_.size()==size()); 195 194 assert(validation_target_.size()==size()); 196 reset();197 195 } 198 196 -
trunk/yat/classifier/SubsetGenerator.h
r680 r704 68 68 /// 69 69 ~SubsetGenerator(); 70 71 ///72 /// @return true if in a valid state73 ///74 inline bool more(void) const { return state_<size(); }75 76 ///77 /// Function turning the object to the next state.78 ///79 inline void next(void) { state_++; }80 81 ///82 /// rewind object to initial state83 ///84 inline void reset(void) { state_=0; }85 70 86 71 /// … … 104 89 /// @return training data 105 90 /// 106 inline const DataLookup2D& training_data(void) const 107 { return *(training_data_[state_]); } 91 inline const DataLookup2D& training_data(std::vector<DataLookup2D*>:: 92 size_type i) const 93 { return *(training_data_[i]); } 108 94 109 95 /// 110 96 /// @return training features 111 97 /// 112 inline const std::vector<size_t>& training_features(void) const 113 { return f_selector_ ? features_[state_] : features_[0]; } 98 inline const std::vector<size_t>& training_features(std::vector<size_t>:: 99 size_type i) const 100 { return f_selector_ ? features_[i] : features_[0]; } 114 101 115 102 … … 117 104 /// @return training index 118 105 /// 119 inline const std::vector<size_t>& training_index(void) const 120 { return sampler_.training_index(state_); } 106 inline const std::vector<size_t>& training_index(std::vector<size_t>:: 107 size_type i) const 108 { return sampler_.training_index(i); } 121 109 122 110 /// 123 111 /// @return training target 124 112 /// 125 inline const Target& training_target(void) const 126 { return training_target_[state_]; } 113 inline const Target& training_target(std::vector<Target>:: 114 size_type i) const 115 { return training_target_[i]; } 127 116 128 117 /// 129 118 /// @return validation data 130 119 /// 131 inline const DataLookup2D& validation_data(void) const 132 { return *(validation_data_[state_]); } 120 inline const DataLookup2D& validation_data(std::vector<DataLookup2D*>:: 121 size_type i) const 122 { return *(validation_data_[i]); } 133 123 134 124 /// 135 125 /// @return validation index 136 126 /// 137 inline const std::vector<size_t>& validation_index(void) const 138 { return sampler_.validation_index(state_); } 127 inline const std::vector<size_t>& validation_index(std::vector<size_t>:: 128 size_type i) const 129 { return sampler_.validation_index(i); } 139 130 140 131 /// 141 132 /// @return validation target 142 133 /// 143 inline const Target& validation_target(void) const 144 { return validation_target_[state_]; } 134 inline const Target& validation_target(std::vector<Target>:: 135 size_type i) const 136 { return validation_target_[i]; } 145 137 146 138 /// … … 156 148 std::vector<std::vector<size_t> > features_; 157 149 const Sampler& sampler_; 158 size_t state_;159 150 std::vector<const DataLookup2D*> training_data_; 160 151 std::vector<Target> training_target_; -
trunk/yat/statistics/Averager.h
r703 r704 100 100 /// \f$ \forall x_i^2 \rightarrow a^2*x_i^2 \f$ 101 101 /// 102 inlinevoid rescale(double a);102 void rescale(double a); 103 103 104 104 ///
Note: See TracChangeset
for help on using the changeset viewer.