one hot 编码的实现

  • one hot 编码,针对的是类别性属性(categorical),类别型属性可以为特征向量中的任一属性,比如性别(one hot 编码的意义在于,属性之间不具有数值上大小的区别,在对最后结果的影响上一视同仁),也可以是分类问题的输出目标值;

对 mnist(手写字符识别)数据集进行手写数字分类,属于多分类问题,手写数字 0-9,共 10 类,从 mnist.pkl.gz 文件中解析得到的字符图像(28*28)的标签(label,或者目标值),只有 1 维,进行 one hot 编码可将其编码为 10 维,数字 0,编码为 [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]

def one_hot(y):
    u = np.unique(y)
    coords = dict()
    for i, x in enumate(u):
        coords[str(x)] = i              
                                            # 建立 value 和 key 之间的反向映射,
                                            # 字典键值对(key-value pairs)的数目,就是 y 中不重复元素的数目
    y_one_hot = np.zeros((len(y), len(u)))
    for i, label in enumerate(y):
        y_one_hot[i, coords[str(label)]] = 1
    return y_one_hot
原文地址:https://www.cnblogs.com/mtcnn/p/9421865.html