diff options
author | Joe Zhao <ztuowen@gmail.com> | 2015-05-11 18:38:39 +0800 |
---|---|---|
committer | Joe Zhao <ztuowen@gmail.com> | 2015-05-11 18:38:39 +0800 |
commit | c69b39a9f149cc6b5c7270d7d864fb677bc83b34 (patch) | |
tree | bba8f4b244c5892265709b822751b9be56b4bf47 /tools | |
parent | 0f05a379b2c5df0b05c23fd91d697464bd250507 (diff) | |
download | ranksvm-c69b39a9f149cc6b5c7270d7d864fb677bc83b34.tar.gz ranksvm-c69b39a9f149cc6b5c7270d7d864fb677bc83b34.tar.bz2 ranksvm-c69b39a9f149cc6b5c7270d7d864fb677bc83b34.zip |
RidFile tested
Diffstat (limited to 'tools')
-rw-r--r-- | tools/dataProvider.h | 11 | ||||
-rw-r--r-- | tools/fileDataProvider.h | 6 |
2 files changed, 14 insertions, 3 deletions
diff --git a/tools/dataProvider.h b/tools/dataProvider.h index 1d430e4..028980e 100644 --- a/tools/dataProvider.h +++ b/tools/dataProvider.h @@ -40,7 +40,11 @@ public: DataEntry* dat = new DataEntry; dat->rank = d->rank; dat->qid = d->qid; - dat->feature = d->feature; + dat->feature.resize(d->feature.rows()); + for (int i=0;i<d->feature.rows();++i) + { + dat->feature(i)=d->feature(i); + } return dat; } inline std::vector<DataEntry*>& getData(){ @@ -59,7 +63,7 @@ public: DataProvider():eof(false){}; bool EOFile(){return eof;} - void getAllData(DataList &out){\ + void getAllDataSet(DataList &out){\ out.clear(); DataList buf; while (!EOFile()) @@ -68,9 +72,12 @@ public: // won't work as data are discarded with every call to getDataSet // out.getData().insert(out.getData().end(),buf.getData().begin(),buf.getData().end()); for (int i=0;i<buf.getSize();++i) + { out.addEntry(out.copyEntry(buf.getData()[i])); + } out.setfSize(buf.getfSize()); } + buf.clear(); } virtual int getDataSet(DataList &out) = 0; virtual int open()=0; diff --git a/tools/fileDataProvider.h b/tools/fileDataProvider.h index c4f6a4a..8ebda20 100644 --- a/tools/fileDataProvider.h +++ b/tools/fileDataProvider.h @@ -82,9 +82,11 @@ public: } pos = 0; qid = 1; + read = true; } out.clear(); fsize = d.getfSize(); + out.setfSize(fsize); std::vector<DataEntry*> & dat = d.getData(); for (int i=0;i<d.getSize();++i) if (i!=pos) @@ -94,6 +96,7 @@ public: e = new DataEntry; e->rank=1; dat[i]->qid=std::to_string(qid); + dat[i]->rank=qid; } else { @@ -103,12 +106,13 @@ public: e->feature.resize(d.getfSize()); e->qid=std::to_string(qid); for (int j = 0; j < fsize; ++j) { - e->feature(i) = fabs(dat[i]->feature(j) -dat[pos]->feature(j)); + e->feature(j) = fabs(dat[i]->feature(j) -dat[pos]->feature(j)); } out.addEntry(e); } dat[pos]->qid=std::to_string(qid); ++qid; + dat[pos]->rank=qid; while (pos<dat.size() && dat[pos]->rank!=-1) ++pos; if (pos==d.getSize()) |