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中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
python matplotlib中文显示参数设置解析
Dec 15 Python
tensorflow识别自己手写数字
Mar 14 Python
python实现dijkstra最短路由算法
Jan 17 Python
简单了解Python生成器是什么
Jul 02 Python
Python CVXOPT模块安装及使用解析
Aug 01 Python
Python super()方法原理详解
Mar 31 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
基于python和flask实现http接口过程解析
Jun 15 Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 Python
Python Django ORM连表正反操作技巧
Jun 13 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
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
[33:15]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VP VS Mineski
2018/03/31 DOTA
详解Python中的各种函数的使用
2015/05/24 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
python如何控制进程或者线程的个数
2020/10/16 Python
python实现猜拳游戏项目
2020/11/30 Python
python利用opencv实现颜色检测
2021/02/23 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
html5用video标签流式加载的实现
2020/05/20 HTML / CSS
金融专业个人的自我评价
2013/10/18 职场文书
2014春晚主持词
2014/03/25 职场文书
大学生社团活动总结
2014/04/26 职场文书
法律系毕业生求职信
2014/05/28 职场文书
单位婚育证明范本
2014/11/21 职场文书
销售会议开幕词
2015/01/28 职场文书
外国人来华邀请函
2015/01/31 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python