summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/dataProvider.h27
-rw-r--r--tools/fileDataProvider.h25
2 files changed, 34 insertions, 18 deletions
diff --git a/tools/dataProvider.h b/tools/dataProvider.h
index bff1f44..fbf554b 100644
--- a/tools/dataProvider.h
+++ b/tools/dataProvider.h
@@ -16,10 +16,6 @@
// Use -1 to indicate not yet labeled data
// -1s will be excluded from training
-typedef Eigen::MatrixXd DataSet;
-
-typedef Eigen::VectorXd Labels;
-
typedef struct DataEntry{
int qid;
double rank;
@@ -29,28 +25,31 @@ typedef struct DataEntry{
class DataList{
private:
int n;
- std::list<DataEntry> data;
+ std::list<DataEntry*> data;
public:
int getSize(){return data.size();}
- void addEntry(DataEntry d){data.push_front(d);}
+ void addEntry(DataEntry* d){data.push_front(d);}
void setfSize(int fsize){n=fsize;}
int getfSize(){return n;}
+ int clear(){
+ for (std::list<DataEntry*>::iterator i=data.begin(),end=data.end();i!=end;++i)
+ delete *i;
+ data.clear();
+ }
+ std::list<DataEntry*> getData(){
+ return data;
+ }
+ ~DataList(){
+ clear();
+ }
};
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;}
diff --git a/tools/fileDataProvider.h b/tools/fileDataProvider.h
index 9ce78e6..6ccf28f 100644
--- a/tools/fileDataProvider.h
+++ b/tools/fileDataProvider.h
@@ -3,21 +3,38 @@
#include "dataProvider.h"
#include <string>
+#include <iostream>
+#include <fstream>
class FileDP:public DataProvider
{
private:
std::string fname;
+ std::ifstream fin;
public:
FileDP(std::string fn=""):fname(fn){};
void setFname(std::string fn){fname=fn;};
virtual int getDataSet(DataList &out){
+ DataEntry* e;
+ out.clear();
+ int fsize;
+ out.setfSize(fsize);
+ fin>>fsize;
+ while (!fin.eof()) {
+ e= new DataEntry;
+ fin>>e->rank;
+ fin>>e->qid;
+ e->feature.resize(fsize);
+ for (int i=0;i<fsize;++i) {
+ fin>>e->feature(i);
+ }
+ out.addEntry(e);
+ }
+ eof=true;
return 0;
}
- int getDataSet(DataSet &D) {return 0;}
- int getLabel(Labels &l) {return 0;}
- virtual int open(){eof=true;return 0;};
- virtual int close(){return 0;};
+ virtual int open(){fin.open(fname); eof=false;return 0;};
+ virtual int close(){fin.close();return 0;};
};
#endif \ No newline at end of file