Changeset 1524


Ignore:
Timestamp:
Sep 23, 2008, 7:49:15 PM (13 years ago)
Author:
Peter
Message:

fixes #443

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/normalization_test.cc

    r1523 r1524  
    247247  for (size_t i=0; i<vec.size(); ++i)
    248248    suite.add(suite.equal(vec[i], 2.0*i-1.0));
    249 }
    250 
    251 
     249
     250  std::vector<utility::DataWeight> vec2;
     251  vec2.push_back(utility::DataWeight(1,1));
     252  vec2.push_back(utility::DataWeight(2.13,0.5));
     253  vec2.push_back(utility::DataWeight(2.13,0.5));
     254  std::vector<utility::DataWeight> vec3(vec2.size());
     255  zscore(vec2.begin(), vec2.end(), vec3.begin());
     256  for (size_t i=0; i<vec2.size(); ++i)
     257    suite.add(suite.equal(vec3[i].weight(), vec2[i].weight()));
     258  suite.add(suite.equal(vec3[0].data(), -1.0));
     259  suite.add(suite.equal(vec3[1].data(), 1.0));
     260  suite.add(suite.equal(vec3[2].data(), 1.0));
     261}
     262
     263
  • trunk/yat/normalizer/Zscore.h

    r1521 r1524  
    2222
    2323#include "yat/statistics/Averager.h"
     24#include "yat/statistics/AveragerWeighted.h"
     25
     26#include "yat/utility/iterator_traits.h"
    2427
    2528namespace theplu {
     
    5356                              OutputIterator result) const
    5457    {
     58      typename utility::weighted_iterator_traits<InputIterator>::type tag;
     59      return normalize(first, last, result, tag);
     60    }
     61
     62  private:
     63    template<class InputIterator, class OutputIterator>
     64    OutputIterator normalize(InputIterator first, InputIterator last,
     65                             OutputIterator result,
     66                             utility::unweighted_iterator_tag tag) const
     67    {
    5568      statistics::Averager a;
    5669      add(a, first, last);
     
    6578    }
    6679
     80    template<class InputIterator, class OutputIterator>
     81    OutputIterator normalize(InputIterator first, InputIterator last,
     82                             OutputIterator result,
     83                             utility::weighted_iterator_tag tag) const
     84    {
     85      std::copy(utility::weight_iterator(first),
     86                utility::weight_iterator(last),
     87                utility::weight_iterator(result));
     88      statistics::AveragerWeighted a;
     89      add(a, first, last);
     90      double m = a.mean();
     91      double std = a.std();
     92      utility::iterator_traits<InputIterator> trait;
     93      while (first!=last) {
     94        trait.data(result) = (trait.data(first) - m) / std;
     95        ++first;
     96        ++result;
     97      }
     98      return result;
     99    }
     100
    67101  };
    68102
Note: See TracChangeset for help on using the changeset viewer.