使用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使用pptx实现复制页面到其他PPT中

    Python使用pptx实现复制页面到其他PPT中

    这篇文章主要为大家详细介绍了python如何使用pptx库实现从一个ppt复制页面到另一个ppt里面,文中的示例代码讲解详细,感兴趣的可以尝试一下
    2023-02-02
  • Python利用matplotlib生成图片背景及图例透明的效果

    Python利用matplotlib生成图片背景及图例透明的效果

    这篇文章主要给大家介绍了Python利用matplotlib生成图片背景及图例透明效果的相关资料,文中给出了详细的示例代码,相信对大家具有一定的参考家价值,需要的朋友们下面来一起学习学习吧。
    2017-04-04
  • Python Map 函数的使用

    Python Map 函数的使用

    这篇文章主要介绍了Python Map 函数的使用,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-08-08
  • Python对ElasticSearch获取数据及操作

    Python对ElasticSearch获取数据及操作

    这篇文章主要为大家详细介绍了Python对ElasticSearch获取数据及操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • python中多个装饰器的执行顺序详解

    python中多个装饰器的执行顺序详解

    装饰器是程序开发中经常会用到的一个功能,也是python语言开发的基础知识。这篇文章主要介绍了python中多个装饰器的执行顺序详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 简单了解如何封装自己的Python包

    简单了解如何封装自己的Python包

    这篇文章主要介绍了简单了解如何封装自己的Python包,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Pyhton爬虫知识之正则表达式详解

    Pyhton爬虫知识之正则表达式详解

    正则表达式又称规则表达式,计算机科学的一个概念,正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本,这篇文章主要给大家介绍了关于Pyhton爬虫知识之正则表达式的相关资料,需要的朋友可以参考下
    2022-04-04
  • 解决jupyter notebook图片显示模糊和保存清晰图片的操作

    解决jupyter notebook图片显示模糊和保存清晰图片的操作

    这篇文章主要介绍了解决jupyter notebook图片显示模糊和保存清晰图片的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • python环境下OPenCV处理视频流局部区域像素值

    python环境下OPenCV处理视频流局部区域像素值

    这篇文章主要为大家介绍了python环境下OPenCV处理视频流局部区域像素值的实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • Python内置加密模块用法解析

    Python内置加密模块用法解析

    这篇文章主要介绍了Python内置加密模块用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论