【发布时间】:2017-09-15 12:01:17
【问题描述】:
我正在尝试编写 K-means 聚类程序,其中需要欧几里得距离。我了解当数据存储在列表中时它是如何工作的,如下面的代码。
for featureset in data:
distances = [np.linalg.norm(featureset - self.centroids[centroid]) for centroid in self.centroids]
cluster_label = distances.index(min(distances))
但是我的数据集非常大(大约 400 万行),所以使用列表或数组肯定不是很有效。我想将数据存储在数据框中。我正在考虑迭代data 的每一行并进行欧几里得计算,但它似乎并不那么有效,即使我使用的是iteruples() 或iterrows。我想知道是否有更有效的方法来做到这一点。
【问题讨论】:
-
所以每个数据框都有一个包含点元组的列?
-
如果我真的明白你的意思,是的。每行包含一组数据点。 @DmitryPolonskiy
-
@AnnaRG,请提供小型(3-7 行)可重复的样本数据集(文本/CSV 格式)和所需的数据集。 how to make good reproducible pandas examples