reservoir.hxx

Go to the documentation of this file.
00001 
00004 #include <iostream>
00005 #include <cmath>
00006 
00007 // #include "reservoir.h"
00008 
00014 template<class T>
00015 void
00016 Reservoir<T>::init(int size, long seed) {
00017   srand(seed);
00018   this->reservoir_size = size;
00019   this->current_size = 0;
00020   exampleClasses = new int[reservoir_size];
00021   pFeatures      = new T[reservoir_size];
00022 }
00023 
00025 
00029 template<class T>
00030 Reservoir<T>::Reservoir(int size) {
00031   init(size, time(NULL));
00032 }
00033 
00039 template<class T>
00040 Reservoir<T>::Reservoir(int size, long seed) {
00041   init(size, seed);
00042 }
00043 
00049 template<class T>
00050 void
00051 Reservoir<T>::swapClassesOfLabels(int i, int j) {
00052   int tempClass = exampleClasses[i];
00053   exampleClasses[i] = exampleClasses[j];
00054   exampleClasses[j] = tempClass;
00055 }
00056 
00062 template<class T>
00063 void
00064 Reservoir<T>::swapVectors(int i, int j) {
00065   T tempVector = pFeatures[i];
00066   pFeatures[i] = pFeatures[j];
00067   pFeatures[j] = tempVector;
00068 }
00069 
00073 template <class T>
00074 void
00075 Reservoir<T>::shuffle() {
00076   for(int i = 0; i < reservoir_size; i ++) {
00077     int randVal = int(floor(drand48() * reservoir_size));
00078     this->swapClassesOfLabels(randVal, i);
00079     this->swapVectors(randVal, i);
00080   }
00081 }
00088 template<class T>
00089 void
00090 Reservoir<T>::copyExample(int index, int classOfExample, T featureArray) {
00091   exampleClasses[index] = classOfExample; 
00092   pFeatures[index] = featureArray;
00093 }
00094 
00100 template<class T>
00101 void 
00102 Reservoir<T>::addExample(int classOfExample, T featureArray)  {
00103   if(current_size < reservoir_size) {
00104     copyExample(current_size, classOfExample, featureArray);
00105     current_size ++;
00106     
00107     if(current_size == reservoir_size)
00108       shuffle();
00109   }
00110   else {
00111     int new_val = int(floor(drand48() * reservoir_size));
00112     copyExample(new_val, classOfExample, featureArray);
00113   }
00114 }
00115 
00120 template<class T>
00121 void
00122 Reservoir<T>::addExample(std::string newExample) {
00123   int classOfExample;
00124   T featureArray;
00125   std::istringstream f;
00126   f.str(newExample + "\n");     
00127   f >> classOfExample >> featureArray;       
00128   addExample(classOfExample, featureArray);
00129 }
00130 
00136 template<class T>
00137 int
00138 Reservoir<T>::getExampleClass(int index) {
00139   return exampleClasses[index];
00140 }
00141 
00146 template<class T>
00147 int
00148 Reservoir<T>::getCurrentSize() {
00149   return current_size;
00150 }
00151 
00157 template<class T>
00158 const T
00159 Reservoir<T>::getExampleFeatureVector(int index) {
00160   return pFeatures[index];
00161 }

Generated on Wed Dec 15 10:46:15 2010 for Hazy_System by  doxygen 1.4.7