当前位置: 代码网 > it编程>编程语言>Asp.net > 使用numpy.eye创建one-hot编码的实现

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

2024年08月07日 Asp.net 我要评论
一、np.eye说明np.eye 是 numpy 中的一个函数,用于创建一个二维数组,其中对角线上为1,其余元素为0。它通常用于生成单位矩阵或对角矩阵。其基本用法如下:matrix = np.eye(

一、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编码内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com