Changeset 637


Ignore:
Timestamp:
Sep 6, 2006, 4:14:00 AM (15 years ago)
Author:
Peter
Message:

fixes #122

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/c++_tools/classifier/SubsetGenerator.cc

    r636 r637  
    122122      else {
    123123        // Third the case of MatrixLookupWeighted
    124         const KernelLookup* kernel =  dynamic_cast<const KernelLookup*>(&data);
     124        const KernelLookup* kernel = dynamic_cast<const KernelLookup*>(&data);
    125125        if (kernel){
    126126          for (reset(); more(); next()){
    127             const KernelLookup* kl=NULL;
    128             if (kernel->weighted()){
    129               std::cerr << "Feature selection with weighted Kernel not "
    130                         << "implemented.\nPlease see http://lev.thep.lu."
    131                         << "se/trac/c++_tools/ticket/116\n";
    132               exit(-1);
     127            const DataLookup2D* matrix = kernel->data();
     128            // dynamically allocated must be deleted
     129            const DataLookup2D* training_matrix =
     130              matrix->training_data(training_index());
     131           
     132            if (matrix->weighted()){
     133              const MatrixLookupWeighted& ml =
     134                dynamic_cast<const MatrixLookupWeighted&>(*matrix);
     135              f_selector_->update(MatrixLookupWeighted(ml,training_index(),
     136                                                       false),
     137                                  training_target());
    133138            }
    134139            else {
    135               const DataLookup2D* matrix = kernel->data();
    136               const DataLookup2D* training_matrix =
    137                 matrix->training_data(training_index());
    138               if (kernel->weighted()){
    139                 const MatrixLookupWeighted& ml =
    140                   dynamic_cast<const MatrixLookupWeighted&>(*training_matrix);
    141                 f_selector_->update(ml, training_target());
    142               }
    143               else {
    144                 const MatrixLookup& ml =
    145                   dynamic_cast<const MatrixLookup&>(*training_matrix);
    146                 f_selector_->update(ml, training_target());
    147               }
    148 
    149               features_.push_back(f_selector_->features());
    150               kl = kernel->selected(features_.back());
    151               delete matrix;
    152               delete training_matrix;
    153             }
     140              const MatrixLookup& ml =
     141                dynamic_cast<const MatrixLookup&>(*matrix);
     142              f_selector_->update(MatrixLookup(ml,training_index(), false),
     143                                  training_target());
     144            }
    154145           
     146            features_.push_back(f_selector_->features());
     147            const KernelLookup* kl = kernel->selected(features_.back());
     148            assert(training_matrix);
     149            delete training_matrix;
     150                     
    155151            // Dynamically allocated. Must be deleted in destructor.
    156152            training_data_.push_back(kl->training_data(features_.back(),
     
    162158            training_target_.push_back(Target(target(),training_index()));
    163159            validation_target_.push_back(Target(target(),validation_index()));
    164             if (kl)
    165               delete kl;
     160            assert(kl);
     161            delete kl;
    166162          }
    167163        }
    168164        else {
    169         std::cerr << "Sorry, your type of DataLookup2D " << typeid(data).name()
    170                   << "is not supported in FeatureSelection\n";
     165        std::cerr << "Sorry, your type of DataLookup2D ("
     166                  << typeid(data).name() << ")\nis not supported in "
     167                  << "SubsetGenerator with\nFeatureSelection\n";
    171168        exit(-1);
    172169        }
Note: See TracChangeset for help on using the changeset viewer.