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.]]
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。