一、前言
之前说过了将一个具体值转换为独热码的方法,即例将a=1转换为三分类的独热码a=[0,1,0]。这次再介绍下如何将由具有概率分布的元素组成的列表转换为独热码形式,即例将test=[ [0.6,0.2,0.2], [0.2,0.3,0.5] ]转换为test=[ [1,0,0], [0,0,1] ]。
二、代码实现
def trans_to_onehot(X):
result=[]
for i in range(len(X)):
max=0
max_index=0
result2=[]
for j in range(len(X[i])):
if X[i][j]>max:
max=X[i][j]
max_index=j
for k in range(len(X[i])):
if k !=max_index:
result2.append(0)
else:
result2.append(1)
result.append(result2)
return result
test5=[[0.6,0.2,0.2],[0.2,0.3,0.5]]
test6=trans_to_onehot(test5)
print("test5:")
print(test5)
print("---------------")
print("test6:")
print(test6)
运行结果:
test5:
[[0.6, 0.2, 0.2], [0.2, 0.3, 0.5]]
---------------
test6:
[[1, 0, 0], [0, 0, 1]]