#ifndef DATAPROV_H #define DATAPROV_H #include #include "../tools/easylogging++.h" #include // TODO decide how to construct training data // One possible way for training data: // Matrix composed of an array of feature vectors // Labels are composed of linked list, such as // 6,3,4,0,5,0,0 // => 0->6 | 1->3 | 2->4->5 // How to compensate for non exhaustive labeling? // Use -1 to indicate not yet labeled data // -1s will be excluded from training typedef Eigen::MatrixXd DataSet; typedef Eigen::VectorXd Labels; class DataProvider //Virtual base class for data input { protected: int size; int attrSize; bool eof; public: DataProvider():eof(false){}; int getSize(){ return size; } int getAttrSize(){ return attrSize; } bool EOFile(){return eof;}; virtual int getDataSet(DataSet &out) = 0; virtual int getLabel(Labels &out) = 0; virtual int open()=0; virtual int close()=0; }; #endif