聚类算法效果评估2,计算Precison,Recall,Fvalue,RI

# !/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);  

转载于:https://www.cnblogs.com/finallyliuyu/archive/2012/02/21/2361743.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值