我如何使用欧几里得距离来计算数据帧的数值变量?

问题描述 投票:-2回答:1

这是我的数据集:https://archive.ics.uci.edu/ml/datasets/Bank+Marketing

在此数据集中,有7个数字变量,作为初学者,我无法使用欧几里得距离来计算距离矩阵。我已经在互联网上尝试了很多方法,但是无法解决。数据非常大,因此有时会导致一些内存问题。

from sklearn.metrics.pairwise import euclidean_distances

X = [[0, 1], [1, 1]]
# distance between rows of X
euclidean_distances(X, X)

# result:
# array([[0., 1.],
#        [1., 0.]])

# get distance to origin
euclidean_distances(X, [[0, 0]])

# Result:
# array([[1.        ],
#        [1.41421356]]) 

我尝试在我的代码上应用的示例,我想它可以工作,但是我不能正确地应用它。

python numpy dataframe
1个回答
1
投票

您已经定义了问题:您无法在内存中容纳整个NxN矩阵。您的数据集标题信息表明数据库中有45211行。使用float32数据的完整距离矩阵占用超过16Gb。如果这超出了您的可用RAM,或者超过了系统对单个数据对象的允许限制,则将出现内存错误。

您通过将算法更改为不需要一次在内存中存储整个2向表的算法来“解决” [[给定 problem。您可以通过仅保留上面的三角形来将内存需求减半。

© www.soinside.com 2019 - 2024. All rights reserved.