gpt4 book ai didi

python - 矩阵的距离矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 00:04:35 25 4
gpt4 key购买 nike

我有一个数据集,其中包含 10 个接口(interface)(表示为 A、B、..、J)的测量值。每个接口(interface)都有 3 个传感器 - 因此对于接口(interface) A,我们将这些传感器表示为 A1、A2、A3。

我的目标是测量不同接口(interface)测量之间的差异。我认为最好使用 Frobenius Norm ,即 - 对于 2 个矩阵 A、B,范数定义为:

enter image description here

这意味着最终我想要一个具有矩阵距离的 10x10 对称矩阵(当然,对角线为零)。

我的数据集是一个 CSV 文件,包含约 25K 行和 30 列(10 个接口(interface) * 3 个传感器)。使用 python(使用 numpypandas)执行此计算的最佳方法是什么?我知道如何对列执行此操作(例如使用 sklearn.metrics.pairwise.euclidean_distances),但我没有找到一种优雅的方法来为矩阵增强它。

编辑:

我的数据集的样子的一个小例子(而不是行号有时间戳,不是太重要...):

     A1    A2    A3    ...    J1   J2   J3
1 3.2 12.9 -7.8 ... 5.5 11.2 -6.9
2 3.4 12.7 -8.0 ... 5.6 11.3 -7.9
3 3.2 12.9 -7.8 ... 5.6 11.4 -7.6

最佳答案

你可能想看看 scipy.spatial.distance.pdist ( docs )

例子:

df
>> A1 A2 A3 J1 J2 J3 B1 B2 B3
1 3.2 12.9 -7.8 5.5 11.2 -6.9 3 1 2
2 3.4 12.7 -8.0 5.6 11.3 -7.9 3 1 2
3 3.2 12.9 -7.8 5.6 11.4 -7.6 3 1 2

from scipy.spatial import distance
groups = [['A1', 'A2', 'A3'], ['B1', 'B2', 'B3'], ['J1', 'J2', 'J3']]

# based on your formula, simply flatten the data to take element-wise distance
dist = distances(distance.pdist([df[group].values.flatten() for group in groups]))
dist
>> array([26.69138438, 4.88364618, 24.6462979 ])

# if you want matrix form
distance.squareform(dist)
>>array([[ 0. , 26.69138438, 4.88364618],
[26.69138438, 0. , 24.6462979 ],
[ 4.88364618, 24.6462979 , 0. ]])

关于python - 矩阵的距离矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54594283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com