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之正规地说一句话
Sep 28 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
Django实现图片文字同时提交的方法
May 26 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
python通过zabbix api获取主机
Sep 17 Python
Python字符串匹配之6种方法的使用详解
Apr 08 Python
Tensorflow读取并输出已保存模型的权重数值方式
Jan 04 Python
Python netmiko模块的使用
Feb 14 Python
简单的Python人脸识别系统
Jul 14 Python
Python 使用office365邮箱的示例
Oct 29 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 Python
python实现简单区块链结构
Apr 25 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 empty函数判断mysql表单是否为空
2010/04/12 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
yii2使用ajax返回json的实现方法
2016/05/14 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
Javascript继承机制详解
2017/05/30 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
Python实现比较两个列表(list)范围
2015/06/12 Python
Python序列操作之进阶篇
2016/12/08 Python
Python使用requests发送POST请求实例代码
2018/01/25 Python
python numpy格式化打印的实例
2018/05/14 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
python 求10个数的平均数实例
2019/12/16 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
端午节粽子促销活动方案
2014/02/02 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers