source: trunk/lib/classifier/ConsensusInputRanker.cc @ 522

Last change on this file since 522 was 522, checked in by Peter, 18 years ago

added function to add InputRanker? to ConsensusInputRanker?

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.6 KB
Line 
1// $Id: ConsensusInputRanker.cc 522 2006-02-23 08:46:13Z peter $
2
3
4#include <c++_tools/classifier/ConsensusInputRanker.h>
5
6#include <c++_tools/classifier/CrossSplitter.h>
7#include <c++_tools/classifier/MatrixLookup.h>
8#include <c++_tools/classifier/InputRanker.h>
9#include <c++_tools/classifier/Target.h>
10#include <c++_tools/statistics/utility.h>
11#include <c++_tools/utility/stl_utility.h>
12#include <c++_tools/gslapi/matrix.h>
13
14#include <cassert>
15#include <iostream>
16#include <utility>
17#include <vector>
18
19
20namespace theplu {
21namespace classifier { 
22
23  ConsensusInputRanker::ConsensusInputRanker
24  (CrossSplitter& sampler, statistics::Score& score_object)
25  {
26    assert(sampler.size());
27    size_t nof_inputs = sampler.training_data().rows();
28    id_.resize(nof_inputs);
29    rank_.resize(nof_inputs);
30    while (sampler.more()){
31      // Peter, should support weights also (in sampler???)
32      input_rankers_.push_back(InputRanker(sampler.training_data(), 
33                                           sampler.training_target(), 
34                                           score_object));
35      sampler.next();
36    }
37    update();
38  }
39
40  void ConsensusInputRanker::update(void)
41  {
42
43    // Sorting with respect to median rank
44    std::vector<std::pair<double,size_t> > medians(id_.size());
45    for (size_t i=0; i<id_.size(); i++){ 
46      std::vector<size_t> ranks(input_rankers_.size());
47      for (size_t j=0; j<input_rankers_.size(); j++) {
48        ranks[j]=input_rankers_[j].rank(i);
49      }
50      medians[i].first = statistics::median(ranks);
51      medians[i].second = i;
52    }
53   
54    //sort medians and assign id_ and rank_
55    sort(medians.begin(), medians.end());
56    for (size_t i=0; i<medians.size(); i++){
57      id_[i]=medians[i].second;
58      rank_[id_[i]]=i;
59    }
60  }
61
62
63}} // of namespace classifier and namespace theplu
Note: See TracBrowser for help on using the repository browser.