使用numpy.eye创建one-hot编码的实现

 更新时间:2024年08月07日 10:38:23   作者:文盲青年  
本文主要介绍了使用numpy.eye创建one-hot编码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、np.eye说明

np.eye 是 NumPy 中的一个函数,用于创建一个二维数组,其中对角线上为1,其余元素为0。它通常用于生成单位矩阵或对角矩阵。其基本用法如下:

matrix = np.eye(3)
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

np.eye 函数的主要参数有:

N:生成的矩阵的行数。
M:生成的矩阵的列数(可选,默认为 N)。
k:对角线的索引(可选,默认为0,即主对角线,k>0 为上对角线,k<0 为下对角线)。
dtype:数组的数据类型(可选,默认为 float)。
例如,创建一个 3x3 的单位矩阵并将对角线向上移动一行:

matrix = np.eye(3, k=1)
[[0. 1. 0.]
 [0. 0. 1.]
 [0. 0. 0.]]

二、独热编码

假设Y_test_orig为一个一行多列的二维矩阵,例如:[ [0 0 0 5 1 0 3 1 5 1 5 1 ] ]

np.eye(6)[Y_test_orig.reshape(-1)] 创建和使用 one-hot 编码。分解一下这个表达式:

1、np.eye(6) 创建了一个 6x6 的单位矩阵(对角矩阵),其中对角线上的元素为 1,其余元素为 0。
例如:

import numpy as np
identity_matrix = np.eye(6)
print(identity_matrix)
[[1. 0. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0. 0.]
 [0. 0. 1. 0. 0. 0.]
 [0. 0. 0. 1. 0. 0.]
 [0. 0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 0. 1.]]

Y_test_orig.reshape(-1) 将 Y_test_orig 重新调整为一维数组。

Y_test_orig = np.array([[0], [1], [2], [3], [4], [5]])
reshaped = Y_test_orig.reshape(-1)
print(reshaped)
[0 1 2 3 4 5]

3、np.eye(6)[Y_test_orig.reshape(-1)] 使用重新调整后的 Y_test_orig 数组作为索引,来选择单位矩阵中的相应行。这将生成一个 one-hot 编码矩阵,其中每个类标签都被编码为一个 one-hot 向量。

Y_test_orig = np.array([[0], [1], [2], [3], [4], [5]])
one_hot_encoded = np.eye(6)[Y_test_orig.reshape(-1)]
print(one_hot_encoded)
[[1. 0. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0. 0.]
 [0. 0. 1. 0. 0. 0.]
 [0. 0. 0. 1. 0. 0.]
 [0. 0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 0. 1.]]

如果Y_test_orig_test为[ [0 0 0 5 1 0 3 1 5 1 5 1 ] ],那么结果将会是:

[[1. 0. 0. 0. 0. 0.]
 [1. 0. 0. 0. 0. 0.]
 [1. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 1.]
 [0. 1. 0. 0. 0. 0.]
 [1. 0. 0. 0. 0. 0.]
 [0. 0. 0. 1. 0. 0.]
 [0. 1. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 1.]
 [0. 1. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 1.]
 [0. 1. 0. 0. 0. 0.]]

再转置一下,np.eye(6)[Y_test_orig.reshape(-1)].T就可以为机器学习所用了:

[[1. 1. 1. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 1. 0. 0. 1. 0. 1. 0. 1.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 1. 0. 0. 0. 0. 1. 0. 1. 0.]]

故独热编码函数:C为类别数,Y为原始二维矩阵如:[ [0 0 0 5 1 0 3 1 5 1 5 1 ] ]

def convert_to_one_hot(Y, C):
    Y = np.eye(C)[Y.reshape(-1)].T
    return Y

到此这篇关于使用numpy.eye创建one-hot编码的实现的文章就介绍到这了,更多相关numpy.eye创建one-hot编码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • python sorted方法和列表使用解析

    python sorted方法和列表使用解析

    这篇文章主要介绍了python sorted方法和列表使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python 2.7中文显示与处理方法

    Python 2.7中文显示与处理方法

    今天小编就为大家分享一篇Python 2.7中文显示与处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 读取本地json文件,解析json(实例讲解)

    读取本地json文件,解析json(实例讲解)

    下面小编就为大家分享一篇读取本地json文件,解析json的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Python中时间datetime的处理与转换用法总结

    Python中时间datetime的处理与转换用法总结

    今天小编就为大家分享一篇关于Python中时间datetime的处理与转换用法总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • python3.4+pycharm 环境安装及使用方法

    python3.4+pycharm 环境安装及使用方法

    这篇文章主要介绍了python3.4+pycharm 环境安装及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Python制作词云的方法

    Python制作词云的方法

    这篇文章主要为大家详细介绍了Python制作词云的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 搞笑的程序猿:看看你是哪种Python程序员

    搞笑的程序猿:看看你是哪种Python程序员

    这篇文章主要介绍了搞笑的程序猿:看看你是哪种Python程序员,不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的Python程序员编出的Python代码,显示出了不同的风格,代码都很简单,有趣,需要的朋友可以参考下
    2015-06-06
  • Python requests HTTP验证登录实现流程

    Python requests HTTP验证登录实现流程

    这篇文章主要介绍了Python requests HTTP验证登录实现流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • mac下pip、conda、homebrew修改为清华镜像源的方法

    mac下pip、conda、homebrew修改为清华镜像源的方法

    本文主要介绍了mac下pip、conda、homebrew修改为清华镜像源的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Flask框架学习笔记之使用Flask实现表单开发详解

    Flask框架学习笔记之使用Flask实现表单开发详解

    这篇文章主要介绍了Flask框架学习笔记之使用Flask实现表单开发,结合实例形式较为详细的分析了flask框架表单模板定义、数据提交等相关操作技巧,需要的朋友可以参考下
    2019-08-08

最新评论