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 相关文章推荐
初步剖析C语言编程中的结构体
Jan 16 Python
python实现决策树分类
Aug 30 Python
python的concat等多种用法详解
Nov 28 Python
对python自动生成接口测试的示例讲解
Nov 30 Python
浅谈python脚本设置运行参数的方法
Dec 03 Python
python射线法判断一个点在图形区域内外
Jun 28 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
python读写文件write和flush的实现方式
Feb 21 Python
jupyter notebook实现显示行号
Apr 13 Python
django queryset相加和筛选教程
May 18 Python
Python使用Matlab命令过程解析
Jun 04 Python
Python中递归以及递归遍历目录详解
Oct 24 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截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
php生成随机数的三种方法
2014/09/10 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
JavaScript中的细节分析
2012/06/30 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
VueJS全面解析
2016/11/10 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
详解js中==与===的区别
2017/01/08 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
Python设计模式之代理模式实例详解
2019/01/19 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
zooplus德国:便宜地订购动物用品、动物饲料、动物食品
2020/05/06 全球购物
公务员年总结的自我评价
2013/10/25 职场文书
业务主管岗位职责范本
2013/12/25 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
质量保证书格式模板
2015/02/27 职场文书
小学工作总结2015
2015/05/04 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL
VUE递归树形实现多级列表
2022/07/15 Vue.js