diff options
| author | Joe Zhao <ztuowen@gmail.com> | 2015-04-27 11:39:51 +0800 | 
|---|---|---|
| committer | Joe Zhao <ztuowen@gmail.com> | 2015-04-27 11:39:51 +0800 | 
| commit | 3924bc35fb5d80dd959805f0f91b2ad5c4d0bc4c (patch) | |
| tree | 7b9794a61729e91982454156530d719e9b245530 | |
| parent | 4f0acec64ad8edcea4269b4121b2ddb2215d3503 (diff) | |
| download | ranksvm-3924bc35fb5d80dd959805f0f91b2ad5c4d0bc4c.tar.gz ranksvm-3924bc35fb5d80dd959805f0f91b2ad5c4d0bc4c.tar.bz2 ranksvm-3924bc35fb5d80dd959805f0f91b2ad5c4d0bc4c.zip  | |
debugged getAllData
| -rw-r--r-- | model/ranksvmtn.cpp | 7 | ||||
| -rw-r--r-- | tools/dataProvider.h | 14 | 
2 files changed, 17 insertions, 4 deletions
diff --git a/model/ranksvmtn.cpp b/model/ranksvmtn.cpp index cd58aa9..b82ce64 100644 --- a/model/ranksvmtn.cpp +++ b/model/ranksvmtn.cpp @@ -210,15 +210,16 @@ int RSVMTN::train(DataList &D){      vector<int> A1,A2;      int i,j;      LOG(INFO)<<"Processing input"; +    vector<DataEntry*> &dat = D.getData();      for (i=0;i<D.getSize();++i) { -        corr(i)=(D.getData()[i])->rank>0?0.5:-0.5; +        corr(i)=(dat[i])->rank>0?0.5:-0.5;          for (j = 0; j < D.getfSize(); ++j) -            Data(i, j) = (D.getData()[i])->feature(j); +            Data(i, j) = dat[i]->feature(j);      }      i=j=0;      while (i<D.getSize())      { -        if ((i+1 == D.getSize())|| D.getData()[i]->qid!=D.getData()[i+1]->qid) +        if ((i+1 == D.getSize())|| dat[i]->qid!=dat[i+1]->qid)          {              A1.push_back(j);              A2.push_back(i); diff --git a/tools/dataProvider.h b/tools/dataProvider.h index 5a2f3e9..a8a5448 100644 --- a/tools/dataProvider.h +++ b/tools/dataProvider.h @@ -35,6 +35,14 @@ public:              delete data[i];          data.clear();      } +    static DataEntry* copyEntry(DataEntry* d) +    { +        DataEntry* dat = new DataEntry; +        dat->rank = d->rank; +        dat->qid = d->qid; +        dat->feature = d->feature; +        return dat; +    }      inline std::vector<DataEntry*>& getData(){          return data;      } @@ -57,8 +65,12 @@ public:          while (!EOFile())          {              getDataSet(buf); -            out.getData().insert(out.getData().end(),buf.getData().begin(),buf.getData().end()); +            // 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());      }      virtual int getDataSet(DataList &out) = 0;      virtual int open()=0;  | 
