• 代码15


    此代码是公司已写好的代码,自己拿来学习,此代码的目标是得出pr图(即准确率和召回率图)所需数据

    import csv
    def get_pr(test_result_file):
        table = []
        reader = csv.reader(open(test_result_file))
        for items in reader:
            table.append((items[1], items[2], float(items[3])))
        table = sorted(table, lambda x, y : cmp(x[2], y[2]), reverse = True)
        length = len(table)
        count = 0
        prs = {}
        for i in range(length):
            if table[i][0] == table[i][1]:
                count += 1
            prs[table[i][2]] = (float(count) / (i+1), float(i+1) / length)              
        prs = sorted(prs.iteritems(), key=lambda x : x[0], reverse = True)         1.没经过sorted前pres还是字典的结构,经过了sorted之后就是list的结构,所以后面print k[0]能用下标访问,如果还是字典就不行,因为字典只能按key访问
        for k in prs:                                        2.sorted是不会改变原来的可迭代对象,只是生成一个新的经过顺序处理的可迭代对象,只是这里又用了prs= 来重新对prs更改
            # threshold, precision, recall                            3.如果把sorted中的prs.iteritems()去掉就会报错。不是因为sorted必须要用iteritems,是因为后面的函数处理是下标访问,如果不处理就仍是字典,字典不能
            print k[0], k[1][0], k[1][1]                             下标访问。这里如果去掉iteritems,同时去掉key,是可以跑成功,就和prs.key()效果一样,对key排序,但同时会只有key保留下来。所以代码只能这样写。也就是
        return prs                                          说以后排序想同时保留key和value,只能这样写代码
    get_pr("/home/xbwang/Desktop/s4.txt")

    s4.txt结构:query,标准intend,测出的intend,得分

    输出结果:

     没经过sorted的prs:

    经过sorted的prs:

     如果按照.key()方式处理,prs的样子为:

    http://www.cnblogs.com/nju2014/p/5569983.html

  • 相关阅读:
    ASP.NET安全问题-- 创建安全的Web应用程序
    浅谈ASP.NET内部机制(八)
    ASP.NET 配置文件纵横谈(一)
    项目开发-让设计模式成为一种心智
    浅谈ASP.NET内部机制(七)
    ASP.NET 配置文件纵横谈(二)
    GridView的分页是否真的是鸡肋呢?
    SQL开发中容易忽视的一些小地方(四)
    SQL开发中容易忽视的一些小地方( 三)
    怎样才能充分利用SQL索引
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/6411159.html
Copyright © 2020-2023  润新知