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中用format函数格式化字符串的用法
Apr 08 Python
说一说Python logging
Apr 15 Python
Python利用itchat对微信中好友数据实现简单分析的方法
Nov 21 Python
python实现感知器
Dec 19 Python
基于python内置函数与匿名函数详解
Jan 09 Python
win7+Python3.5下scrapy的安装方法
Jul 31 Python
在scrapy中使用phantomJS实现异步爬取的方法
Dec 17 Python
Python 转换RGB颜色值的示例代码
Oct 13 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 Python
python数据可视化使用pyfinance分析证券收益示例详解
Nov 20 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 pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
js 表格隔行颜色
2009/12/02 Javascript
jQuery maxlength文本字数限制插件
2010/04/16 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
javascript作用域问题实例分析
2015/07/13 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
JavaScript实现可拖拽的拖动层Div实例
2015/08/05 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
Angular刷新当前页面的实现方法
2018/11/21 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
Windows下实现Python2和Python3两个版共存的方法
2015/06/12 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
仓库管理专业个人的自我评价
2013/12/30 职场文书
早恋主题班会
2015/08/14 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis