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中让MySQL查询结果返回字典类型的方法
Aug 22 Python
对Python中plt的画图函数详解
Nov 07 Python
Python查找文件中包含中文的行方法
Dec 19 Python
python3.x实现base64加密和解密
Mar 28 Python
pycharm 安装JPype的教程
Aug 08 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
详解使用Python下载文件的几种方法
Oct 13 Python
Django media static外部访问Django中的图片设置教程
Apr 07 Python
Python requests及aiohttp速度对比代码实例
Jul 16 Python
Django如何批量创建Model
Sep 01 Python
基于python的opencv图像处理实现对斑马线的检测示例
Nov 29 Python
利用Python函数实现一个万历表完整示例
Jan 23 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数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
Java及python正则表达式详解
2017/12/27 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
Html5之title吸顶功能
2018/06/04 HTML / CSS
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
函授毕业生自我鉴定
2013/11/06 职场文书
继电保护工岗位职责
2014/01/05 职场文书
毕业设计计划书
2014/01/09 职场文书
学校安全检查制度
2014/01/27 职场文书
安全生产承诺书范文
2014/05/22 职场文书
课程设计的心得体会
2014/09/03 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
2015年感恩节演讲稿(优选篇)
2015/03/20 职场文书
立春观后感
2015/06/18 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python