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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值