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文件去除注释的方法
May 25 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
Mar 13 Python
Python生成8位随机字符串的方法分析
Dec 05 Python
python 字符串只保留汉字的方法
Nov 16 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
Python实现Linux监控的方法
May 16 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
python 使用递归实现打印一个数字的每一位示例
Feb 27 Python
python中查看.db文件中表格的名字及表格中的字段操作
Jul 07 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 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
ajax取消挂起请求的处理方法
2013/03/18 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
js charAt的使用示例
2014/02/18 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
Python交换变量
2008/09/06 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
python绘制分布折线图的示例
2020/09/24 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
巴西男士个人护理产品商店:SHOP4MEN
2017/08/07 全球购物
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
咖啡厅创业计划书范本
2014/01/22 职场文书
教师师德反思材料
2014/02/15 职场文书
法制宣传月活动总结
2014/04/29 职场文书
物流管理专业求职信
2014/05/29 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
客户答谢会致辞
2015/07/30 职场文书
编写python程序的90条建议
2021/04/14 Python
常用的Python代码调试工具总结
2021/06/23 Python