python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python将标签转化为one-hot(独热编码)

python之如何将标签转化为one-hot(独热编码)

作者:云端浅蓝

这篇文章主要介绍了python之如何将标签转化为one-hot(独热编码)问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

将标签转化为one-hot(独热编码)

问题描述

在利用categorical_crossentropy作为损失函数时,需要将标签设定为one-hot格式,即每个标签的长度应转换为一个长度为类别数的向量,该向量除了所属的类别位置为1之外,其他位置值为0。

from keras.utils.np_utils import to_categorical
categorical_labels = to_categorical(int_labels, num_classes=None)

示例:

import numpy as np
int_labels = np.array([2,1,3,5])
from keras.utils.np_utils import to_categorical
categorical_labels = to_categorical(int_labels, num_classes=None)
print(categorical_labels)

将矩阵X转换为one-hot矩阵

Python中将X(假设X的大小为1*m,类别为k类)转换为one-hot矩阵

准备一个eye(k)矩阵,然后根据X将对应的列取出来。(或者把行取出来再转置)

def conv_to_one_hot(X,n):
    X = np.array(X)
    refer = np.eye(n)
    X_one_hot = refer[X]
    return X_one_hot.T
X=[3,5,4,7]
print(conv_to_one_hot(X,8))

结果为:

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

总结

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

您可能感兴趣的文章:
阅读全文