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 11 Python
Django实现全文检索的方法(支持中文)
May 14 Python
对Python的zip函数妙用,旋转矩阵详解
Dec 13 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
python 将日期戳(五位数时间)转换为标准时间
Jul 11 Python
Python 使用matplotlib模块模拟掷骰子
Aug 08 Python
Django上线部署之IIS的配置方法
Aug 22 Python
Python函数中的可变长参数详解
Sep 12 Python
5款实用的python 工具推荐
Oct 13 Python
详解BeautifulSoup获取特定标签下内容的方法
Dec 07 Python
python解包概念及实例
Feb 17 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 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
模仿OSO的论坛(五)
2006/10/09 PHP
php学习笔记之 函数声明(二)
2011/06/09 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
jquery 插件 任意位置浮动固定层
2008/12/25 Javascript
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
jquery实现购物车基本功能
2019/10/25 jQuery
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
python实现提取百度搜索结果的方法
2015/05/19 Python
对python字典过滤条件的实例详解
2019/01/22 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
python生成大写32位uuid代码
2020/03/03 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
什么是接口(Interface)?
2013/02/01 面试题
工作态度检讨书范文
2015/05/06 职场文书
生日赠语
2015/06/23 职场文书
二十年同学聚会感言
2015/07/30 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
导游词之山海关
2019/12/10 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers