python 的topk算法实例


Posted in Python onApril 02, 2020

我就废话不多说了,还是直接看代码吧!

#! conding:utf-8

def quick_index(array, start, end):
 left, right = start, end
 key = array[left]
 while left < right:
  while left < right and array[right] > key:
   right -= 1
  array[left] = array[right]
  while left < right and array[left] < key:
   left += 1
  array[right] = array[left]

 array[left] = key
 return left


def min_num(array, m):
 start, end = 0, len(array) - 1
 index = quick_index(array, start, end)
 while index != m:
  if index < m:
   index = quick_index(array, index+1, end)
  else:
   index = quick_index(array, start, index)

 print(array[:m])

if __name__ == '__main__':
 alist = [15,54, 26, 93, 17, 77, 31, 44, 55, 20]

 min_num(alist, 5)

补充知识:python numpy 求top-k accuracy指标

top-k acc表示在多分类情况下取最高的k类得分的label,与真实值匹配,只要有一个label match,结果就是True。

如对于一个有5类的多分类任务

a_real = 1
a_pred = [0.02, 0.23, 0.35, 0.38, 0.02]

#top-1 
a_pred_label = 3 match = False
#top-3
a_pred_label_list = [1, 2, 3] match = True

对于top-1 accuracy

sklearn.metrics提供accuracy的方法,能够直接计算得分,但是对于topk-acc就需要自己实现了:

#5类:0,1,2,3,4
import numpy as np
a_real = np.array([[1], [2], [1], [3]])
#用随机数代替分数
random_score = np.random.rand((4,5))
a_pred_score = random_score / random_score.sum(axis=1).reshape(random_score.shape[0], 1)

k = 3 #top-3
#以下是计算方法
max_k_preds = a_pred_score.argsort(axis=1)[:, -k:][:, ::-1] #得到top-k label
match_array = np.logical_or.reduce(max_k_preds==a_real, axis=1) #得到匹配结果
topk_acc_score = match_array.sum() / match_array.shape[0]

以上这篇python 的topk算法实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
用Python登录好友QQ空间点赞的示例代码
Nov 04 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
Jul 12 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
Django Rest framework频率原理与限制
Jul 26 Python
Python实现多线程/多进程的TCP服务器
Sep 03 Python
python和php学习哪个更有发展
Jun 17 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 Python
java字符串格式化输出实例讲解
Jan 06 Python
Python内置类型集合set和frozenset的使用详解
Apr 26 Python
Python+DeOldify实现老照片上色功能
Jun 21 Python
python torch.utils.data.DataLoader使用方法
Apr 02 #Python
Python基于stuck实现scoket文件传输
Apr 02 #Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 #Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 #Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 #Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 #Python
PyTorch中的C++扩展实现
Apr 02 #Python
You might like
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
php合并js请求的例子
2013/11/01 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
js 操作select相关方法函数
2009/12/06 Javascript
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
vue-router 权限控制的示例代码
2017/09/21 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
python取代netcat过程分析
2018/02/10 Python
python实现贪吃蛇双人大战
2020/04/18 Python
解决python对齐错误的方法
2020/07/16 Python
用纯css3和html制作泡沫对话框实现代码
2013/03/21 HTML / CSS
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
一年级数学教学反思
2014/02/01 职场文书
财务科科长岗位职责
2014/03/10 职场文书
群众路线党课主持词
2014/04/01 职场文书
2014年新生军训方案
2014/05/01 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
《游戏公平》教学反思
2016/02/20 职场文书
德劲DE1108畅想
2021/04/22 无线电
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL