【发布时间】:2018-10-24 00:03:48
【问题描述】:
我使用 OneHotEncoder 对 y 向量进行编码,运行我的神经网络并得到输出。
这里a代表我的y向量,b代表预测结果
a = np.array([[0., 0., 1., 0.],
[0., 0., 1., 0.],
[0., 0., 1., 0.],
[0., 0., 1., 0.],
[0., 0., 1., 0.],
[0., 0., 1., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 1., 0.]])
b=np.array([[0., 0., 0., 1.],
[1., 0., 0., 0.],
[0., 0., 1., 0.],
[0., 1., 0., 0.],
[1., 0., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 1., 0.],
[1., 0., 0., 0.],
[0., 0., 0., 1.],
[0., 1., 0., 0.]])
print(np.mean(a!=b))
print(np.mean(np.argmax(a,1)!=np.argmax(b,1)))
但在恢复编码后(使用np.argmax(a,1)),我得到了输出:
0.35
0.7
这些值不应该相等吗?
【问题讨论】:
-
在处理分类变量时使用一种热编码。你为什么首先对整数进行编码?
-
出于架构目的,我需要将例如 1 转换为 [0,1,0,0],将 3 转换为 [0,0,0,1] 等等。