#!/usr/bin/python
import sys;
import re;
def getPrecision(TP,TN,FP,FN):
    result=0.0;
    result=TP/(TP+FP);
    return result;
def getRecall(TP,TN,FP,FN):
    result=0.0;
    result=TP/(TP+FN);
    return result;
def getFvalue(TP,TN,FP,FN):
    result=0.0;
    p=getPrecision(TP,TN,FP,FN);
    r=getRecall(TP,TN,FP,FN);
    result=2*p*r/(p+r);
    return result;
def getRI(TP,TN,FP,FN):
    result=0.0;
    result=(TP+TN)/(TP+FP+FN+TN);
    return result;
if(__name__=="__main__"):
    filename=str(sys.argv[1]);
    TP=0.0;
    FP=0.0;
    TN=0.0;
    FN=0.0;
    preturn=re.compile('(^\s+|\s+$)');
    doccollection=[];
    fidsrc=file(filename,'r');
    for line in fidsrc.readlines():
        line=preturn.sub('',line);
        m=line.split('\t');
        if(len(m)==3):
            doccollection.append((int(m[0]),int(m[1]),int(m[2])));
    fidsrc.close();
    for i in range(0,len(doccollection)-1):
        for j in range(i+1,len(doccollection)):
            elem1=doccollection[i];
            elem2=doccollection[j];
            if(elem1[2]==elem2[2] and elem1[1]==elem2[1]):
                TP=TP+1;
            if(elem1[2]==elem2[2] and elem1[1]!=elem2[1]):
                FN=FN+1;
            if(elem1[2]!=elem2[2] and elem1[1]==elem2[1]):
                FP=FP+1;
            if(elem1[2]!=elem2[2] and elem1[1]!=elem2[1]):
                TN=TN+1;
    p=getPrecision(TP,TN,FP,FN);
    r=getRecall(TP,TN,FP,FN);
    f=getFvalue(TP,TN,FP,FN);
    ri=getRI(TP,TN,FP,FN);
    print 'TP=%f,TN=%f,FP=%f,FN=%f'%(TP,TN,FP,FN);
    print 'precision=%f,recall=%f,fvalue=%f,RI=%f'%(p,r,f,ri);  

相关文章:

  • 2021-08-17
  • 2022-01-24
  • 2021-11-15
  • 2021-07-03
  • 2021-07-05
  • 2021-07-02
  • 2022-12-23
  • 2022-01-10
猜你喜欢
  • 2021-11-17
  • 2022-12-23
  • 2021-04-30
  • 2022-12-23
  • 2021-06-21
  • 2021-11-29
  • 2021-06-14
相关资源
相似解决方案