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中的__future__模块
Apr 27 Python
python通过ftplib登录到ftp服务器的方法
May 08 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
python操作excel文件并输出txt文件的实例
Jul 10 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
Python登录系统界面实现详解
Jun 25 Python
利用OpenCV和Python实现查找图片差异
Dec 19 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
Python 实现日志同时输出到屏幕和文件
Feb 19 Python
python 如何对logging日志封装
Dec 02 Python
Python数据结构之队列详解
Mar 21 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操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
网站上面有这种切换效果
2006/06/26 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
js+css实现打字效果
2020/06/24 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
Python3.5运算符操作实例详解
2019/04/25 Python
python绘制直方图和密度图的实例
2019/07/08 Python
Python程序暂停的正常处理方法
2019/11/07 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
Python之多进程与多线程的使用
2021/02/23 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
《可爱的动物》教学反思
2014/02/22 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
考试诚信承诺书
2014/05/23 职场文书
中秋手机店促销方案
2014/06/16 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
大学生受助感言
2015/08/01 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers