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聊天程序实例代码分享
Nov 18 Python
Python中生成器和yield语句的用法详解
Apr 17 Python
python实现的文件同步服务器实例
Jun 02 Python
Python在Console下显示文本进度条的方法
Feb 14 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
在Pandas中处理NaN值的方法
Jun 25 Python
代码实例讲解python3的编码问题
Jul 08 Python
对Django中内置的User模型实例详解
Aug 16 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
python实现数据清洗(缺失值与异常值处理)
Dec 02 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
Python实现排序方法常见的四种
Jul 15 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
php 搜索框提示(自动完成)实例代码
2012/02/05 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
JS实现网页标题随机显示名人名言的方法
2015/11/03 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
react的hooks的用法详解
2020/10/12 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
儿童学习python的一些小技巧
2018/05/27 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
Python类的动态绑定实现原理
2020/03/21 Python
jupyter notebook 参数传递给shell命令行实例
2020/04/10 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
班级活动策划书
2014/02/06 职场文书
学生手册评语
2014/05/05 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
华清池导游词
2015/02/02 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript