【问题标题】:Check the accuracy of vector检查向量的准确性
【发布时间】:2018-09-22 04:32:26
【问题描述】:

我用 Python 学习 AI 并遇到这种情况:我创建了一个深度学习模型,在他的输入层中有 10 个神经元。在输出层我有 3 个神经元。我将数据分成 80% 用于学习,20% 用于测试。

经过训练的模型已准备好进行测试。

直到现在,我总是遇到输出层中只有一个神经元的情况。所以,我以这种方式测试了准确性:

classifier = Sequential()
# ...
classifier.add(Dense(units = 3, kernel_initializer = 'uniform', activation = 'sigmoid'))
# ...
y_pred = classifier.predict(np.array(X_test))
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

当输出层在每个预测中只有一个值时效果很好。

就我而言,我在每个预测中有 3 个值。

y_pred = array ([[3.142904686503911194e-11, 1.000000000000000000e+00, 1.729809626091548085e-16],
[7.398544450698540942e-12, 1.000000000000000000e+00, 1.776427415878292515e-22],
[4.224535246066807304e-07, 1.000000000000000000e+00 7.929732391553923065e-12]])

我想将它与我的预期值进行比较,其中:

y_test = [[0, 1, 0], [0, 1, 0], [0, 1, 0]]

所以,我可以选择手动完成这项工作:

  1. 在预测值的最大值处置入 1。其他值变为 0。
  2. 逐行比较两个向量。

看来一定有更好的办法?

【问题讨论】:

  • 看看numpy.allclose(array1, array2)。它按元素比较两个数组,如果每对元素在一定的公差范围内相等,则返回 True

标签: python tensorflow scikit-learn


【解决方案1】:

您想衡量预测向量与预期向量的“接近”程度。描述两个向量之间“差异量”的一个很好的公式是检查增量向量的大小(或平方大小)(预测 - 预期)。

在这种情况下,您可以这样做:

def square_magnitude(vector):
    return sum(x*x for x in vector)

def inaccuracy(pred, test):  #should only get equal-length items
    return square_magnitude([pred[i] - test[i] for i in range(len(pred))]) / len(pred)

由于您有三个样本:

total_inaccuracy = sum(inaccuracy(y_pred[i], y_test[i]) for i in range(len(y_pred))) / len(y_pred)

当它完全准确时它应该是 0,当它不太准确时它应该是更高(正)。

【讨论】:

  • 感谢您的建议。您在 sum 方法中缺少“()”。我只是运行你的代码并得到输出array([16.34357647, 4.65592751, 16.07208552])。如何获得百分比的准确性?
  • 谢谢 - 已修复。我也没有注意到您有三个向量(对帐户的更新和扩展答案)。
  • 您无法获得百分比的准确度,因为它可能是无限错误的(例如,如果预测为 -999 而期望为 1...)。但是,由于您似乎总是期望 0 或 1,也许您可​​以说最大不准确度是每个 1 的增量:这将导致值1,因为我们除以测试数量。
  • 正如你所说,我总是希望得到二进制值。因此,仅有的 3 个值是 [1, 0, 0][0, 1, 0][0, 0, 1]。我认为我需要添加另一个将预测转换为这些值的步骤。例如,向量 [0.1, 0.2, 0.3] 更改为 [0, 0, 1](因为索引 2 中的元素概率最高)。我错了吗?
  • 运行你的代码后,我得到了0.0902的值。这是否意味着它的准确率为 91%?
猜你喜欢
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 2019-07-19
  • 2022-12-25
  • 2017-04-06
  • 2021-09-27
  • 2018-09-23
相关资源
最近更新 更多