source: trunk/lib/svm/ConsensusInputRanker.cc @ 295

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

file structure modifications. NOTE, this revision is not working, please wait for the next...

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.9 KB
Line 
1// $Id: ConsensusInputRanker.cc 295 2005-04-29 09:15:58Z peter $
2
3
4#include <c++_tools/svm/ConsensusInputRanker.h>
5
6#include <c++_tools/gslapi/matrix.h>
7#include <c++_tools/statistics/Statistics.h>
8#include <c++_tools/svm/CrossValidation.h>
9#include <c++_tools/svm/InputRanker.h>
10#include <c++_tools/utility/stl_utility.h>
11
12#include <utility>
13#include <vector>
14
15namespace theplu {
16namespace svm { 
17
18  ConsensusInputRanker::ConsensusInputRanker(const gslapi::matrix& data,
19                                             const gslapi::vector& target,
20                                             statistics::Score& score_object,
21                                             const size_t rounds,
22                                             const size_t k)
23    :id_(std::vector<size_t>()), input_rankers_(std::vector<InputRanker>()), 
24     k_(k), nof_rankers_(k*rounds), rank_(std::vector<size_t>())
25
26  {
27    CrossValidation cv(target, k_);
28    for (size_t i=0; i<nof_rankers_; i++){
29      //InputRanker ir(data, target, score_object);
30      input_rankers_.push_back(InputRanker(data, target, score_object,
31                                           cv.next()));
32    }
33    // Sorting with respect to median rank
34    std::vector<std::pair<size_t,double> > median(data.rows());
35    for (size_t i=0; i<data.rows(); i++){ 
36      std::vector<size_t> ranks(nof_rankers_);
37      for (size_t j=0; j<nof_rankers_; j++) 
38        ranks[j]=input_rankers_[j].rank(i);
39     
40      median[i].first = i;
41      median[i].second = statistics::median(ranks);
42    }
43   
44    //sort medians and assign id_ and rank_
45    sort(median.begin(), median.end(), 
46         cpptools::pair_value_compare<size_t, double>());
47    id_.resize(data.rows());
48    rank_.resize(data.rows());
49    for (size_t i=0; i<data.rows(); i++){
50      id_[i]=median[i].first;
51      rank_[id_[i]]=i;           
52    }
53
54  }
55
56  ConsensusInputRanker::ConsensusInputRanker(const gslapi::matrix& data,
57                                             const gslapi::vector& target,
58                                             const gslapi::matrix& weight,
59                                             statistics::Score& score_object,
60                                             const size_t rounds,
61                                             const size_t k)
62    :id_(std::vector<size_t>()), input_rankers_(std::vector<InputRanker>()), 
63     k_(k), nof_rankers_(k*rounds), rank_(std::vector<size_t>())
64
65  {
66    CrossValidation cv(target, k_);
67    for (size_t i=0; i<nof_rankers_; i++)
68      input_rankers_.push_back(InputRanker(data,target,weight,score_object,
69                                           cv.next()));
70   
71    // Sorting with respect to median rank
72    std::vector<std::pair<size_t,double> > median(data.rows());
73    for (size_t i=0; i<data.rows(); i++){ 
74      std::vector<size_t> ranks(nof_rankers_);
75      for (size_t j=0; j<nof_rankers_; j++) 
76        ranks[j]=input_rankers_[j].rank(i);
77      median[i].first = i;
78      median[i].second = statistics::median(ranks);
79    }
80   
81    //sort medians and assign id_ and rank_
82    sort(median.begin(), median.end(), 
83         cpptools::pair_value_compare<size_t, double>());
84    id_.resize(data.rows());
85    rank_.resize(data.rows());
86    for (size_t i=0; i<data.rows(); i++){
87      id_[i]=median[i].first;
88      rank_[id_[i]]=i;           
89    }
90
91  }
92   
93
94}} // of namespace svm and namespace theplu
Note: See TracBrowser for help on using the repository browser.