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 07 Python
Python检测生僻字的实现方法
Oct 23 Python
Python 中迭代器与生成器实例详解
Mar 29 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
python编程培训 python培训靠谱吗
Jan 17 Python
Python subprocess模块详细解读
Jan 29 Python
Python实现Pig Latin小游戏实例代码
Feb 02 Python
python 自动批量打开网页的示例
Feb 21 Python
python构建指数平滑预测模型示例
Nov 21 Python
Pycharm debug调试时带参数过程解析
Feb 03 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
Aug 18 Python
用Python创建简易网站图文教程
Jun 11 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单例模式应用详解
2013/06/03 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
childNodes.length与children.length的区别
2009/05/14 Javascript
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
利用npm 安装删除模块的方法
2018/05/15 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
vue之延时刷新实例
2019/11/14 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
c++生成dll使用python调用dll的方法
2014/01/20 Python
python生成随机mac地址的方法
2015/03/16 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
刑事和解协议书范本
2014/11/19 职场文书
自我检讨书范文
2015/01/28 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
2016党校学习心得体会
2016/01/07 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python