Vowpal Wabbit
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
features Struct Reference

the core definition of a set of features. More...

#include <feature_group.h>

Classes

class  features_value_index_audit_range
 defines a "range" usable by C++ 11 for loops More...
 

Public Types

typedef features_value_index_iterator iterator
 
typedef features_value_iterator iterator_value
 
typedef features_value_index_audit_iterator iterator_all
 

Public Member Functions

 features ()
 
size_t size () const
 
bool nonempty () const
 
void free_space_names (size_t i)
 
features_value_index_audit_range values_indices_audit ()
 
iterator begin ()
 
iterator end ()
 
void clear ()
 
void truncate_to (const features_value_iterator &pos)
 
void truncate_to (size_t i)
 
void delete_v ()
 
void push_back (feature_value v, feature_index i)
 
bool sort (uint64_t parse_mask)
 
void deep_copy_from (const features &src)
 

Public Attributes

v_array< feature_valuevalues
 
v_array< feature_indexindicies
 
v_array< audit_strings_ptrspace_names
 
float sum_feat_sq
 

Detailed Description

the core definition of a set of features.

Definition at line 241 of file feature_group.h.

Member Typedef Documentation

◆ iterator

Definition at line 249 of file feature_group.h.

◆ iterator_all

Definition at line 251 of file feature_group.h.

◆ iterator_value

Definition at line 250 of file feature_group.h.

Constructor & Destructor Documentation

◆ features()

features::features ( )
inline

Definition at line 269 of file feature_group.h.

270  {
271  values = v_init<feature_value>();
272  indicies = v_init<feature_index>();
273  space_names = v_init<audit_strings_ptr>();
274  sum_feat_sq = 0.f;
275  }
v_array< feature_index > indicies
v_array< feature_value > values
v_array< audit_strings_ptr > space_names
float sum_feat_sq

Member Function Documentation

◆ begin()

iterator features::begin ( )
inline

Definition at line 292 of file feature_group.h.

References v_array< T >::begin().

Referenced by collision_cleanup(), MARGINAL::make_marginal(), and MARGINAL::update_marginal().

292 { return iterator(values.begin(), indicies.begin()); }
v_array< feature_index > indicies
v_array< feature_value > values
T *& begin()
Definition: v_array.h:42
features_value_index_iterator iterator

◆ clear()

void features::clear ( )
inline

◆ deep_copy_from()

void features::deep_copy_from ( const features src)
inline

Definition at line 384 of file feature_group.h.

References copy_array(), copy_array_no_memcpy(), indicies, space_names, sum_feat_sq, and values.

Referenced by Search::action_repr::action_repr(), VW::copy_example_metadata(), learn(), parse_dictionary_argument(), and predict_or_learn().

385  {
386  copy_array(values, src.values);
389  sum_feat_sq = src.sum_feat_sq;
390  }
void copy_array(v_array< T > &dst, const v_array< T > &src)
Definition: v_array.h:185
v_array< feature_index > indicies
v_array< feature_value > values
void copy_array_no_memcpy(v_array< T > &dst, const v_array< T > &src)
Definition: v_array.h:193
v_array< audit_strings_ptr > space_names
float sum_feat_sq

◆ delete_v()

void features::delete_v ( )
inline

Definition at line 329 of file feature_group.h.

References v_array< T >::delete_v().

Referenced by VW::dealloc_example(), VW::delete_dictionary_entry(), memory_tree_ns::diag_kronecker_prod_fs_test(), free_flatten_example(), Search::reset_search_structure(), interact::~interact(), and Search::search::~search().

330  {
331  values.delete_v();
332  indicies.delete_v();
334  }
v_array< feature_index > indicies
v_array< feature_value > values
v_array< audit_strings_ptr > space_names
void delete_v()
Definition: v_array.h:98

◆ end()

iterator features::end ( )
inline

Definition at line 294 of file feature_group.h.

References v_array< T >::end().

Referenced by MARGINAL::make_marginal(), and MARGINAL::update_marginal().

294 { return iterator(values.end(), indicies.end()); }
v_array< feature_index > indicies
v_array< feature_value > values
features_value_index_iterator iterator
T *& end()
Definition: v_array.h:43

◆ free_space_names()

void features::free_space_names ( size_t  i)
inline

Definition at line 284 of file feature_group.h.

References v_array< T >::size().

285  {
286  for (; i < space_names.size(); i++) space_names[i].~audit_strings_ptr();
287  }
std::shared_ptr< audit_strings > audit_strings_ptr
Definition: feature_group.h:23
size_t size() const
Definition: v_array.h:68
v_array< audit_strings_ptr > space_names

◆ nonempty()

bool features::nonempty ( ) const
inline

Definition at line 282 of file feature_group.h.

References v_array< T >::empty().

Referenced by INTERACTIONS::generate_interactions().

282 { return !values.empty(); }
v_array< feature_value > values
bool empty() const
Definition: v_array.h:59

◆ push_back()

void features::push_back ( feature_value  v,
feature_index  i 
)
inline

◆ size()

size_t features::size ( ) const
inline

◆ sort()

bool features::sort ( uint64_t  parse_mask)
inline

Definition at line 343 of file feature_group.h.

References v_array< T >::begin(), v_array< T >::delete_v(), v_array< T >::empty(), feature::feature(), v_array< T >::push_back(), and v_array< T >::size().

Referenced by feature_limit(), and flatten_sort_example().

344  {
345  if (indicies.empty())
346  return false;
347 
348  if (!space_names.empty())
349  {
350  v_array<feature_slice> slice = v_init<feature_slice>();
351  for (size_t i = 0; i < indicies.size(); i++)
352  {
353  feature_slice temp = {values[i], indicies[i] & parse_mask, *space_names[i].get()};
354  slice.push_back(temp);
355  }
356  qsort(slice.begin(), slice.size(), sizeof(feature_slice), order_features<feature_slice>);
357  for (size_t i = 0; i < slice.size(); i++)
358  {
359  values[i] = slice[i].x;
360  indicies[i] = slice[i].weight_index;
361  *space_names[i].get() = slice[i].space_name;
362  }
363  slice.delete_v();
364  }
365  else
366  {
367  v_array<feature> slice = v_init<feature>();
368  for (size_t i = 0; i < indicies.size(); i++)
369  {
370  feature temp = {values[i], indicies[i] & parse_mask};
371  slice.push_back(temp);
372  }
373  qsort(slice.begin(), slice.size(), sizeof(feature), order_features<feature>);
374  for (size_t i = 0; i < slice.size(); i++)
375  {
376  values[i] = slice[i].x;
377  indicies[i] = slice[i].weight_index;
378  }
379  slice.delete_v();
380  }
381  return true;
382  }
v_array< feature_index > indicies
v_array< feature_value > values
T *& begin()
Definition: v_array.h:42
size_t size() const
Definition: v_array.h:68
void push_back(const T &new_ele)
Definition: v_array.h:107
v_array< audit_strings_ptr > space_names
bool empty() const
Definition: v_array.h:59
void delete_v()
Definition: v_array.h:98

◆ truncate_to() [1/2]

void features::truncate_to ( const features_value_iterator pos)
inline

Definition at line 304 of file feature_group.h.

References features_value_iterator::_begin, v_array< T >::begin(), and v_array< T >::end().

Referenced by LabelDict::del_example_namespace(), and unique_features().

305  {
306  ssize_t i = pos._begin - values.begin();
307  values.end() = pos._begin;
308  if (indicies.end() != indicies.begin())
309  indicies.end() = indicies.begin() + i;
310  if (space_names.begin() != space_names.end())
311  {
312  free_space_names((size_t)i);
313  space_names.end() = space_names.begin() + i;
314  }
315  }
v_array< feature_index > indicies
void free_space_names(size_t i)
v_array< feature_value > values
T *& begin()
Definition: v_array.h:42
feature_value * _begin
Definition: feature_group.h:57
T *& end()
Definition: v_array.h:43
v_array< audit_strings_ptr > space_names

◆ truncate_to() [2/2]

void features::truncate_to ( size_t  i)
inline

Definition at line 317 of file feature_group.h.

References v_array< T >::begin(), and v_array< T >::end().

318  {
319  values.end() = values.begin() + i;
320  if (indicies.end() != indicies.begin())
321  indicies.end() = indicies.begin() + i;
322  if (space_names.begin() != space_names.end())
323  {
324  free_space_names(i);
325  space_names.end() = space_names.begin() + i;
326  }
327  }
v_array< feature_index > indicies
void free_space_names(size_t i)
v_array< feature_value > values
T *& begin()
Definition: v_array.h:42
T *& end()
Definition: v_array.h:43
v_array< audit_strings_ptr > space_names

◆ values_indices_audit()

features_value_index_audit_range features::values_indices_audit ( )
inline

Definition at line 289 of file feature_group.h.

Referenced by INTERACTIONS::generate_interactions(), and unique_features().

289 { return {this}; }

Member Data Documentation

◆ indicies

v_array<feature_index> features::indicies

◆ space_names

v_array<audit_strings_ptr> features::space_names

◆ sum_feat_sq

float features::sum_feat_sq

◆ values

v_array<feature_value> features::values

The documentation for this struct was generated from the following file: