diff options
Diffstat (limited to 'model/rankaccu.cpp')
-rw-r--r-- | model/rankaccu.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/model/rankaccu.cpp b/model/rankaccu.cpp index 73b5d18..ba8aee6 100644 --- a/model/rankaccu.cpp +++ b/model/rankaccu.cpp @@ -75,20 +75,21 @@ void rank_accu(DataList &D,const vector<double> pred) unsigned long n = D.getSize(); vector<int> orig_rank(n),pred_rank(n),C(n); vector<double> orig(n); + vector<DataEntry*> &dat = D.getData(); int i,j; - for (i=0;i<D.getSize();++i) + for (i=0;i<dat.size();++i) { orig_rank[i]=i; pred_rank[i]=i; - orig[i]=D.getData()[i]->rank; + orig[i]=dat[i]->rank; } int cnt=0; double accu_nDCG=0; double accu_AP=0; i=j=0; - while (i<D.getSize()) + while (i<dat.size()) { - if ((i+1 == D.getSize())|| D.getData()[i]->qid!=D.getData()[i+1]->qid) + if ((i+1 == dat.size())|| dat[i]->qid!=dat[i+1]->qid) { double Y=0,Z=0; double AP=0; @@ -117,24 +118,25 @@ void rank_CMC(DataList &D,const std::vector<double> pred,CMC & cmc) { unsigned long n = D.getSize(); vector<int> orig_rank(n),pred_rank(n); vector<double> orig(n); + vector<DataEntry*> &dat = D.getData(); int i,j; - for (i=0;i<D.getSize();++i) + for (i=0;i<dat.size();++i) { orig_rank[i]=i; pred_rank[i]=i; - orig[i]=D.getData()[i]->rank; + orig[i]=dat[i]->rank; } int cnt=0; i=j=0; - while (i<D.getSize()) + while (i<dat.size()) { - if ((i+1 == D.getSize())|| D.getData()[i]->qid!=D.getData()[i+1]->qid) + if ((i+1 == dat.size())|| dat[i]->qid!=dat[i+1]->qid) { ranksort(j,i,pred_rank,pred,orig); for (int k=j;k<=i;++k) if (orig[pred_rank[k]]>0) { - cout<<pred_rank[k]<<" "<<pred[k+1]<<" "<< k <<" "<< j<<endl; + cout<<dat[pred_rank[k]]->qid<<" "<<pred[k]<<" "<< k-j<<endl; cmc.addEntry(k-j); break; // account only for the first match; } |