jubatus_core  0.1.2
Jubatus: Online machine learning framework for distributed environment
feature_hasher.cpp
Go to the documentation of this file.
1 // Jubatus: Online machine learning framework for distributed environment
2 // Copyright (C) 2011,2012 Preferred Networks and Nippon Telegraph and Telephone Corporation.
3 //
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License version 2.1 as published by the Free Software Foundation.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 
17 #include "feature_hasher.hpp"
18 
19 #include <string>
20 #include "jubatus/util/data/functional_hash.h"
21 #include "jubatus/util/lang/cast.h"
22 #include "../common/exception.hpp"
23 #include "../common/hash.hpp"
24 #include "exception.hpp"
25 
26 namespace jubatus {
27 namespace core {
28 namespace fv_converter {
29 
31  : max_size_(max) {
32  if (max == 0) {
33  throw JUBATUS_EXCEPTION(
34  converter_exception("feature max size must be positive"));
35  }
36 }
37 
39  for (size_t i = 0, size = fv.size(); i < size; ++i) {
40  uint64_t id = common::hash_util::calc_string_hash(fv[i].first) % max_size_;
41  fv[i].first = jubatus::util::lang::lexical_cast<std::string>(id);
42  }
43 }
44 
45 } // namespace fv_converter
46 } // namespace core
47 } // namespace jubatus
void hash_feature_keys(common::sfv_t &fv) const
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79
std::vector< std::pair< std::string, float > > sfv_t
Definition: type.hpp:29
static uint64_t calc_string_hash(const std::string &s)
Definition: hash.hpp:29