当前位置:主页 > python教程 > python label与one-hot的互相转换

python label与one-hot之间的互相转换方式

发布:2023-04-23 15:55:02 59


给网友们整理相关的编程文章,网友宓锌希根据主题投稿了本篇教程内容,涉及到python、label、python、one-hot、label与one-hot互相转换、python label与one-hot的互相转换相关内容,已被385网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

python label与one-hot的互相转换

label与one-hot之间的互相转换

有时候需要label,比如强化学习的离散动作空间,输出动作索引;有时候需要one-hot,比如训练数据或者输入上一个状态的动作,简单的互相转换还是重要的。

label 转 one-hot

通过 np.eye(action_dims)[actions] 快速生成:

>>> import numpy as np
>>> label = [1,2,2,3]
>>> np.eye(4)[label]
array([[0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 1., 0.],
       [0., 0., 0., 1.]])

one-hot 转label

numpy可以通过 np.argmax(onehot, 1) 实现,pytorch 可以通过 torch.topk(one_hot, 1)[1].squeeze(1) 实现:

>>> import torch
>>> onehot
array([[0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 1., 0.],
       [0., 0., 0., 1.]])
>>> np.argmax(onehot,1)
array([1, 2, 2, 3], dtype=int64)
>>> torch.topk(torch.tensor(onehot), 1)[1].squeeze(1)
tensor([1, 2, 2, 3])

label:one-hot 与 标量转化

标量 转化为 one-hot 向量

from keras.utils import to_categorical

data = [1, 3, 2, 0, 3, 2, 2, 1, 0, 1]
encoded = to_categorical(data)
print("encoded:", encoded)

输出:

encoded: [[0. 1. 0. 0.]
             [0. 0. 0. 1.]
             [0. 0. 1. 0.]
             [1. 0. 0. 0.]
             [0. 0. 0. 1.]
             [0. 0. 1. 0.]
             [0. 0. 1. 0.]
             [0. 1. 0. 0.]
             [1. 0. 0. 0.]
             [0. 1. 0. 0.]]

one-hot向量 转化为 标量

因为一个热向量是一个包含0和1的向量,所以可以这样做:

encoded = np.array([[0, 1, 0, 0],
                    [0, 0, 0, 1],
                    [0, 0, 1, 0],
                    [1, 0, 0, 0],
                    [0, 0, 0, 1],
                    [0, 0, 1, 0],
                    [0, 0, 1, 0],
                    [0, 1, 0, 0],
                    [1, 0, 0, 0],
                    [0, 1, 0, 0]])

data = [np.where(r == 1)[0][0] for r in encoded]
print("data:", data)

输出:

data: [1, 3, 2, 0, 3, 2, 2, 1, 0, 1]

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持码农之家。


参考资料

相关文章

  • 如何彻底解决python NameError:name '__file__' is not defined

    发布:2023-04-16

    这篇文章主要给大家介绍了关于如何彻底解决python NameError:name '__file__' is not defined的相关资料,文中通过图文将解决的办法介绍的非常详细,需要的朋友可以参考下


  • Python实现识别手写数字的方法

    发布:2021-05-19

    这篇文章主要为大家详细介绍了Python实现识别手写数字,Python图片的读入与处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • Python操作配置文件方法分享

    发布:2020-02-19

    这篇文章主要给大家介绍了关于Python配置文件处理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧


  • Python 仅获取响应头, 不获取实体的实例

    Python 仅获取响应头, 不获取实体的实例

    发布:2022-07-04

    给大家整理一篇关于Python的教程,今天小编就为大家分享一篇Python 仅获取响应头, 不获取实体的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • Python快速查找list中相同部分的实例代码

    发布:2019-08-16

    今天小编就为大家分享一篇Python快速查找list中相同部分的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • Python3.7中安装openCV库的实例讲解

    发布:2020-02-03

    这篇文章主要介绍了Python3.7中安装openCV库的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下


  • QT中在QLabel显示图片并且利用鼠标点击画线问题

    发布:2023-03-13

    这篇文章主要介绍了QT中在QLabel显示图片并且利用鼠标点击画线问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


  • python实现机器学习多元线性回归总结

    发布:2019-06-08

    这篇文章主要为大家详细介绍了python实现机器学习之多元线性回归,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


网友讨论