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 相关文章推荐
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
Python退火算法在高次方程的应用
Jul 26 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
Jun 17 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
Oct 24 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
Pycharm如何运行.py文件的方法步骤
Mar 03 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
May 26 Python
Pandas的Apply函数具体使用
Jul 21 Python
用python制作个音乐下载器
Jan 30 Python
python 实现德洛内三角剖分的操作
Apr 22 Python
教你如何用Python实现人脸识别(含源代码)
Jun 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+mysql数据库实现无限分类的方法
2014/12/12 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
JS高级运动实例分析
2016/12/20 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
Python实现发送email的几种常用方法
2014/08/18 Python
Python中的闭包实例详解
2014/08/29 Python
Python set常用操作函数集锦
2017/11/15 Python
python创建文件备份的脚本
2018/09/11 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
python中列表的含义及用法
2020/05/26 Python
哪些是python中web开发框架
2020/06/17 Python
Stuart Weitzman欧盟:美国奢华鞋履品牌
2017/05/24 全球购物
护理专业的自荐信
2013/10/22 职场文书
集中采购方案
2014/06/10 职场文书
个人先进事迹材料
2014/12/29 职场文书
催款通知书范文
2015/04/17 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
天气温馨提示语
2015/07/14 职场文书
初中班干部工作总结
2015/08/10 职场文书
导游词之临安白水涧
2019/11/05 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
Python绘制散乱的点构成的图的方法
2022/04/21 Python