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的While循环语句的使用方法
Oct 13 Python
全面了解python字符串和字典
Jul 07 Python
pandas.DataFrame 根据条件新建列并赋值的方法
Apr 08 Python
python读取文本中的坐标方法
Oct 14 Python
Python3.6简单的操作Mysql数据库的三个实例
Oct 17 Python
快速排序的四种python实现(推荐)
Apr 03 Python
Python3 批量扫描端口的例子
Jul 25 Python
Python实现不规则图形填充的思路
Feb 02 Python
python输出数学符号实例
May 11 Python
django 模型中的计算字段实例
May 19 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
Jul 03 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图片缩放实现方法
2014/02/20 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
解决vue-router 嵌套路由没反应的问题
2020/09/22 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
python使用matplotlib绘制折线图教程
2017/02/08 Python
python pandas修改列属性的方法详解
2018/06/09 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
Django app配置多个数据库代码实例
2019/12/17 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
巴西网上药房:onofre
2016/11/21 全球购物
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
2014学雷锋活动总结
2014/03/09 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
保管员岗位职责
2015/02/14 职场文书
处罚决定书范文
2015/06/24 职场文书
整脏治乱工作简报
2015/07/21 职场文书
Python中字符串对象语法分享
2022/02/24 Python