diff options
author | Joe Zhao <ztuowen@gmail.com> | 2015-05-12 13:30:55 +0800 |
---|---|---|
committer | Joe Zhao <ztuowen@gmail.com> | 2015-05-12 13:30:55 +0800 |
commit | 62b6b42e27a4972397e94fdbb03e74ac3f5f1244 (patch) | |
tree | 3643d071bb793fd1eb9959c29890b8f059748310 /model/rankaccu.cpp | |
parent | c69b39a9f149cc6b5c7270d7d864fb677bc83b34 (diff) | |
download | ranksvm-62b6b42e27a4972397e94fdbb03e74ac3f5f1244.tar.gz ranksvm-62b6b42e27a4972397e94fdbb03e74ac3f5f1244.tar.bz2 ranksvm-62b6b42e27a4972397e94fdbb03e74ac3f5f1244.zip |
misc
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; } |