您的位置:首页 > 编程语言 > Python开发

使用Numpy进行one-hot编码

2018-01-26 17:53 417 查看
在实现很多机器学习任务的时候,经常需要将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.]])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  代码
相关文章推荐