Python 聚类和标签

数据挖掘 Python scikit-学习 数据库扫描
2022-02-17 15:15:12

我目前正在试验 scikit 和 DBSCAN 算法。我想知道如何将数据与标签结合起来以将它们写入一个新文件。我还想了解标签数组如何用于过滤示例。

每当我说错话时请纠正我,因为我想更好地理解整个过程。

例如,我的数据如下所示:

city    x    y
A       1    1
B       1    1
C       5    5
D       8    8

因此,如果我理解正确,我首先需要拆分我想要集群的数据。如果我使用上面的数据,它也会考虑城市列(甚至失败)。

所以我的下一个数组看起来像这样:

x    y
1    1
1    1
5    5
8    8

现在我将在我的阵列上使用 DBSCAN,它将创建一个集群模型。集群标签现在存储在数组foo.labels_中。

据我所知,我可以使用这些标签过滤数据以获取集群中的项目。假设我的数据在数据框城市中:

cluster0 = cities[foo.labels_ == 0]

我不明白这是如何工作的。我不知何故不明白这里到底发生了什么。我知道标签在一个数组中,其中列是一个数字,列的值是簇。那么我如何获得我的城市的正确索引?

因此,在聚类之后,我想将我的数据导出回具有以下格式的 CSV 文件:

city    x     y     cluster
A       1     1     0
B       1     1     0
C       5     5     1
D       8     8     2

我的猜测是使用原始数据框并添加另一列,如下所示:

cities = cities.assign(cluster=p.Series(labels_))

但我绝对不确定这是否是实现我想做的正确方法。

我真的很感激一些意见和解释。

1个回答

由于算法不应更改列表的顺序,您只需添加集群列表

 cities["cluster"] = cluster 

如果你真的很偏执,你可以以同样的方式再次将你的输入参数添加到数据框中,并比较值的差异(应该是 0)。