使用Numpy进行one-hot编码

在实现很多机器学习任务的时候,经常需要将labels进行one-hot encoding,具体思想这里就不详述,借一张图来表示:

这里写图片描述

由于最后的每个label向量只有一个维度的值是1,其他都是0,所以实现方法可以借助线性代数中的单位矩阵 [百度百科] [wikipedia]

Numpy实现可以是这样:

# 函数需不需要返回转置要根据具体情况看
# 如果不转置每个label返回的就是一个行向量
# 这里转置了,每个label就是对应的列向量

def convert_to_one_hot(y, C):
    return np.eye(C)[y.reshape(-1)].T

y = np.array([1,2,3,4])
convert_to_one_hot(y,5)
# array([[ 0.,  0.,  0.,  0.],
#        [ 1.,  0.,  0.,  0.],
#        [ 0.,  1.,  0.,  0.],
#        [ 0.,  0.,  1.,  0.],
#        [ 0.,  0.,  0.,  1.]])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值