123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485 |
-
-
- namespace NICE {
- /**
- * @class FeatureMatrixT
- * @brief A feature matrix, storing (sparse) features sorted per dimension
- * @author Alexander Freytag
- */
-
- template<class T> class FeatureMatrixT : public NICE::Persistent
- {
- protected:
- uint ui_n;
- uint ui_d;
- std::vector<NICE::SortedVectorSparse<T> > features;
-
-
- bool b_verbose;
-
- bool b_debug;
- public:
-
-
- typedef T value_type;
-
- typedef const T& const_reference;
-
- typedef T* iterator;
-
- typedef const T* const_iterator;
-
- typedef T& reference;
-
-
-
-
-
-
- FeatureMatrixT();
-
-
- FeatureMatrixT(const std::vector<std::vector<T> > & _features,
- const uint & _dim = 0
- );
-
-
- FeatureMatrixT(const sparse_t & _features,
- const uint & _dim = 0
- );
-
- FeatureMatrixT(const std::vector< const NICE::SparseVector * > & _X,
- const bool _dimensionsOverExamples = false,
- const uint & _dim = 0
- );
-
-
- FeatureMatrixT(const sparse_t & _features,
- const std::map<uint, uint> & _examples ,
- const uint & _dim = 0);
-
- ~FeatureMatrixT();
-
-
-
-
-
-
- uint get_n() const;
-
- uint get_d() const;
-
-
- void set_d(const uint & _d);
-
-
- void setVerbose( const bool & _verbose);
- bool getVerbose( ) const;
-
-
- void setDebug( const bool & _debug);
- bool getDebug( ) const;
-
-
-
- inline bool operator==(const FeatureMatrixT<T> & _F) const;
-
-
- inline bool operator!= (const FeatureMatrixT<T> & _F) const;
-
- inline FeatureMatrixT<T>& operator=(const FeatureMatrixT<T> & _F);
-
-
- inline T operator()(const uint _row,
- const uint _col
- ) const;
-
-
- inline T getUnsafe(const uint _row,
- const uint _col
- ) const;
-
- inline T getOriginal(const uint _row,
- const uint _col
- ) const;
-
- inline void set (const uint _row,
- const uint _col,
- const T & _newElement,
- bool _setTransformedValue = false
- );
-
-
- inline void setUnsafe (const uint _row,
- const uint _col,
- const T & _newElement,
- bool _setTransformedValue = false
- );
-
-
- void getDimension(const uint & _dim,
- NICE::SortedVectorSparse<T> & _dimension
- ) const;
-
-
- void getDimensionUnsafe(const uint & _dim,
- NICE::SortedVectorSparse<T> & _dimension
- ) const;
-
-
- void findFirstInDimension(const uint & _dim,
- const T & _elem,
- uint & _position
- ) const;
-
-
- void findLastInDimension(const uint & _dim,
- const T & _elem,
- uint & _position
- ) const;
-
-
- void findFirstLargerInDimension(const uint & _dim,
- const T & elem,
- uint & position
- ) const;
-
-
- void findLastSmallerInDimension(const uint & _dim,
- const T & _elem,
- uint & _position
- ) const;
-
-
-
-
-
-
-
- void applyFunctionToFeatureMatrix ( const NICE::ParameterizedFunction *_pf = NULL );
-
-
- double computeSparsityRatio() const;
-
- void add_feature(const std::vector<T> & _feature,
- const NICE::ParameterizedFunction *_pf = NULL
- );
-
-
- void add_feature(const NICE::SparseVector & _feature,
- const NICE::ParameterizedFunction *_pf = NULL
- );
-
- void add_features(const std::vector<std::vector<T> > & _features );
-
-
- void set_features(const std::vector<std::vector<T> > & _features,
- std::vector<std::vector<uint> > & _permutations,
- const uint & _dim = 0
- );
- void set_features(const std::vector<std::vector<T> > & _features,
- std::vector<std::map<uint,uint> > & _permutations,
- const uint & _dim = 0
- );
- void set_features(const std::vector<std::vector<T> > & _features,
- const uint & _dim = 0
- );
- void set_features(const std::vector< const NICE::SparseVector * > & _features,
- const bool _dimensionsOverExamples = false,
- const uint & _dim = 0
- );
-
-
- void getPermutations( std::vector<std::vector<uint> > & _permutations) const;
- void getPermutations( std::vector<std::map<uint,uint> > & _permutations) const;
-
-
- void print(std::ostream & _os) const;
-
-
- void computeNonSparseMatrix(NICE::MatrixT<T> & _matrix,
- bool _transpose = false
- ) const;
-
-
- void computeNonSparseMatrix(std::vector<std::vector<T> > & _matrix,
- bool _transpose = false
- ) const;
-
-
- void swap(const uint & _row1,
- const uint & _col1,
- const uint & _row2,
- const uint & _col2
- );
-
-
- void swapUnsafe(const uint & _row1,
- const uint & _col1,
- const uint & _row2,
- const uint & _col2
- );
-
- const SortedVectorSparse<T> & getFeatureValues ( uint _dim ) const { return this->features[_dim]; };
-
-
- SortedVectorSparse<T> & getFeatureValues ( uint _dim ) { return this->features[_dim]; };
-
-
-
- void hikDiagonalElements( Vector & _diagonalElements ) const;
-
- double hikTrace() const;
-
-
-
- uint getNumberOfNonZeroElementsPerDimension(const uint & _dim) const;
-
-
-
- uint getNumberOfZeroElementsPerDimension(const uint & _dim) const;
-
-
- virtual void restore ( std::istream & _is, int _format = 0 );
- virtual void store ( std::ostream & _os, int _format = 0 ) const;
- virtual void clear ( );
- };
-
- typedef FeatureMatrixT<double> FeatureMatrix;
- typedef FeatureMatrixT<bool> BoolFeatureMatrix;
- typedef FeatureMatrixT<char> CharFeatureMatrix;
- typedef FeatureMatrixT<int> IntFeatureMatrix;
- typedef FeatureMatrixT<float> FloatFeatureMatrix;
- }
|