这是我的数据集: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]])
我尝试在我的代码上应用的示例,我想它可以工作,但是我不能正确地应用它。
您已经定义了问题:您无法在内存中容纳整个NxN矩阵。您的数据集标题信息表明数据库中有45211行。使用float32数据的完整距离矩阵占用超过16Gb。如果这超出了您的可用RAM,或者超过了系统对单个数据对象的允许限制,则将出现内存错误。
您通过将算法更改为不需要一次在内存中存储整个2向表的算法来“解决” [[给定 problem。您可以通过仅保留上面的三角形来将内存需求减半。