22 #include "jubatus/util/data/intern.h"
23 #include "jubatus/util/concurrent/lock.h"
27 using jubatus::util::concurrent::scoped_lock;
48 id_features3_t::const_iterator
cit =
tbl_.find(feature);
49 if (cit ==
tbl_.end()) {
53 for (id_feature_val3_t::const_iterator it = m.begin(); it != m.end(); ++it) {
66 id_features3_t::const_iterator
cit =
tbl_.find(feature);
67 if (cit ==
tbl_.end()) {
71 for (id_feature_val3_t::const_iterator it = m.begin(); it != m.end(); ++it) {
73 val2_t(it->second.v1, it->second.v2)));
85 id_features3_t::const_iterator
cit =
tbl_.find(feature);
86 if (cit ==
tbl_.end()) {
90 for (id_feature_val3_t::const_iterator it = m.begin(); it != m.end(); ++it) {
101 jubatus::util::data::unordered_map<uint64_t, float> ret_id;
102 for (common::sfv_t::const_iterator it = sfv.begin(); it != sfv.end(); ++it) {
103 const string& feature = it->first;
104 const float val = it->second;
105 id_features3_t::const_iterator it2 =
tbl_.find(feature);
106 if (it2 ==
tbl_.end()) {
110 for (id_feature_val3_t::const_iterator it3 = m.begin(); it3 != m.end();
112 ret_id[it3->first] += it3->second.v1 * val;
117 for (
size_t i = 0; i < labels.size(); ++i) {
118 const std::string& label = labels[i];
123 ret[label] = ret_id[id];
129 const string& feature,
137 const string& feature,
144 const string& feature,
152 const string& feature,
161 const string& feature,
169 const string& feature,
177 status[
"num_features"] =
178 jubatus::util::lang::lexical_cast<std::string>(
tbl_.size());
179 status[
"num_classes"] =
180 jubatus::util::lang::lexical_cast<std::string>(
class2id_.
size());
185 for (id_feature_val3_t::const_iterator it = f.begin(); it != f.end(); ++it) {
186 sum += std::fabs(it->second.v1);
194 const string& inc_class,
195 const string& dec_class) {
198 typedef common::sfv_t::const_iterator iter_t;
199 if (dec_class !=
"") {
201 for (iter_t it = sfv.begin(); it != sfv.end(); ++it) {
202 float val = it->second * step_width;
204 feature_row[inc_id].v1 += val;
205 feature_row[dec_id].v1 -= val;
208 for (iter_t it = sfv.begin(); it != sfv.end(); ++it) {
209 float val = it->second * step_width;
211 feature_row[inc_id].v1 += val;
217 const string& feature,
218 const string& inc_class,
219 const string& dec_class,
257 for (id_features3_t::iterator it =
tbl_.begin();
260 const bool deleted = it->second.erase(delete_id);
261 if (deleted && it->second.empty()) {
289 return "local_storage";
uint64_t get_id_const(const std::string &key) const
void set3(const std::string &feature, const std::string &klass, const val3_t &w)
void set2(const std::string &feature, const std::string &klass, const val2_t &w)
bool set_label(const std::string &label)
void set2_nolock(const std::string &feature, const std::string &klass, const val2_t &w)
void get_status(std::map< std::string, std::string > &status) const
void update(const std::string &feature, const std::string &inc_class, const std::string &dec_class, const val1_t &v)
unordered_map< string, uint64_t >::const_iterator cit
common::key_manager class2id_
jubatus::util::data::unordered_map< std::string, val1_t > map_feature_val1_t
void get_nolock(const std::string &feature, feature_val1_t &ret) const
bool set_key(const std::string &key)
jubatus::util::data::unordered_map< std::string, id_feature_val3_t > id_features3_t
void inp(const common::sfv_t &sfv, map_feature_val1_t &ret) const
void register_label(const std::string &label)
void get2_nolock(const std::string &feature, feature_val2_t &ret) const
void pack(framework::packer &packer) const
void bulk_update(const common::sfv_t &sfv, float step_width, const std::string &inc_class, const std::string &dec_class)
std::vector< std::pair< std::string, val1_t > > feature_val1_t
void get(const std::string &feature, feature_val1_t &ret) const
void unpack(msgpack::object o)
void set(const std::string &feature, const std::string &klass, const val1_t &w)
void get3(const std::string &feature, feature_val3_t &ret) const
const std::string & get_key(const uint64_t id) const
void set3_nolock(const std::string &feature, const std::string &klass, const val3_t &w)
msgpack::packer< jubatus_packer > packer
bool delete_label_nolock(const std::string &label)
double sum(const common::sfv_t &p)
uint64_t get_id(const std::string &key)
std::vector< std::pair< std::string, val3_t > > feature_val3_t
util::concurrent::mutex mutex_
std::vector< std::pair< std::string, float > > sfv_t
void delete_key(const std::string &name)
bool delete_label(const std::string &label)
jubatus::util::data::unordered_map< uint64_t, val3_t > id_feature_val3_t
void set_nolock(const std::string &feature, const std::string &klass, const val1_t &w)
std::vector< std::string > get_labels() const
std::vector< std::pair< std::string, val2_t > > feature_val2_t
std::vector< std::string > get_all_id2key() const
void get3_nolock(const std::string &feature, feature_val3_t &ret) const
void swap(key_manager &km)
util::concurrent::mutex & get_lock() const
void get2(const std::string &feature, feature_val2_t &ret) const
float feature_fabssum(const id_feature_val3_t &f)