我想计算矩阵A和矩阵B之间的距离。但是,由于某些原因,我不能使用 np.linalg.norm(A-B,axis=1)
我唯一能做的就是像 np.linalg.norm(A,axis=1) - np.linalg.norm(B,axis=1)
但我想知道,这是否是相同的 np.linalg.norm(A-B,axis=1)
?
正如评论部分所提到的,对于矩阵之间的相似性度量,你总是可以将用于1d向量的基本相似性或 "误差 "度量扩展到矩阵上,如 MSE
或 MAE
. 例如,对于 MAE
你可以直接将两个矩阵减去元素归一化。
a = np.random.rand(3,3)
b = np.random.rand(3,3)
(np.abs(a-b)).sum()/np.prod(a.shape)
# 0.2515
或者更简洁地说,用 np.average
:
np.average(np.abs(a - b))
# 0.2515
我们也有 sklearn.metrics.mean_absolute_error
,也支持 (n_samples, n_outputs)
大小的数组来处理多标签问题。
from sklearn.metrics import mean_absolute_error
mean_absolute_error(a, b)
# 0.2515
或者如果你想在输出中显示单个标签的错误。
mean_absolute_error(a, b, multioutput='raw_values')
# array([0.06629783, 0.43894195, 0.24946039])