source: trunk/lib/classifier/InputRanker.cc @ 451

Last change on this file since 451 was 451, checked in by Peter, 16 years ago

directory svm -> classifier

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.4 KB
Line 
1// $Id: InputRanker.cc 451 2005-12-15 21:09:12Z peter $
2
3#include <c++_tools/classifier/InputRanker.h>
4
5#include <c++_tools/gslapi/matrix.h>
6#include <c++_tools/gslapi/vector.h>
7#include <c++_tools/statistics/ROC.h>
8#include <c++_tools/utility/stl_utility.h>
9
10#include <vector>
11#include <utility>
12
13namespace theplu {
14namespace classifier { 
15
16
17  InputRanker::InputRanker(const gslapi::matrix& data, 
18                           const gslapi::vector& target, 
19                           statistics::Score& score_object,
20                           const std::vector<size_t>& train_set)
21    :train_set_(train_set),
22     id_(std::vector<size_t>(data.rows())),
23     rank_(std::vector<size_t>(data.rows()))
24 
25  {
26    size_t nof_genes = data.rows();
27    size_t nof_samples = data.columns();
28    if (!train_set_.size()){
29      train_set_.resize(nof_samples);
30      for (size_t i=0; i<nof_samples; i++)
31        train_set_[i]=i; 
32    }
33
34    //scoring each input
35    std::vector<std::pair<size_t, double> > score;
36    for (size_t i=0; i<nof_genes; i++) {
37      double area = score_object.score(target,gslapi::vector(data,i),train_set_);
38      std::pair<size_t, double> tmp(i,area);
39      score.push_back(tmp);
40    }
41
42    //sort the scores and assign id_ and rank_
43    sort(score.begin(), score.end(), 
44         utility::pair_value_compare<size_t, double>());
45   
46    for (size_t i=0; i<nof_genes; i++){
47      id_[i]=score[nof_genes-i-1].first;
48      rank_[id_[i]]=i;           
49    }
50  }
51
52
53
54  InputRanker::InputRanker(const gslapi::matrix& data, 
55                           const gslapi::vector& target, 
56                           const gslapi::matrix& weight, 
57                           statistics::Score& score_object,
58                           const std::vector<size_t>& train_set)
59    :train_set_(train_set),
60     id_(std::vector<size_t>(data.rows())),
61     rank_(std::vector<size_t>(data.rows()))
62 
63  {
64    size_t nof_genes = data.rows();
65    size_t nof_samples = data.columns();
66    if (!train_set_.size()){
67      train_set_.resize(nof_samples);
68      for (size_t i=0; i<nof_samples; i++)
69        train_set_[i]=i; 
70    }
71    //scoring each input
72    std::vector<std::pair<size_t, double> > score;
73    for (size_t i=0; i<nof_genes; i++) {
74      double area = score_object.score(target, gslapi::vector(data,i),
75                                       gslapi::vector(weight,i), train_set_);
76      std::pair<size_t, double> tmp(i,area);
77      score.push_back(tmp);
78    }
79    //sort the scores and assign id_ and rank_
80    sort(score.begin(), score.end(), 
81         utility::pair_value_compare<size_t, double>());
82
83    for (size_t i=0; i<nof_genes; i++){
84      id_[i]=score[nof_genes-i-1].first;
85      rank_[id_[i]]=i;           
86    }
87  }
88
89
90}} // of namespace classifier and namespace theplu
Note: See TracBrowser for help on using the repository browser.