summaryrefslogtreecommitdiff
path: root/model/rankaccu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'model/rankaccu.cpp')
-rw-r--r--model/rankaccu.cpp20
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;
}