Jaccard 与二进制数据的相似性

数据挖掘 Python 可视化 数据清理 相似 杰卡德系数
2022-02-08 21:19:30

我有 5400 行数据和 3211 列属性。

前 4 列是 ID/Name/ParentID/ObjectType - 其余 3207 列是用于相似性度量的属性。

巨大的维度,我知道,但我想(作为第一步)看看这些数据如何聚集并找到所有属性之间的相似性。

如果没有值,我将所有属性值转换为“0”,如果有值,则转换为“1”。我认为如果我将值转换为二进制,那么让我开始使用聚类视觉和相似性度量将是一个简单的第一步。

Jaccard 相似性似乎是二进制的一个很好的衡量标准,但是当我没有任何用于比较的列表时,我对如何实现这个(在 Python 中)感到困惑。我是否应该将每个变量硬编码到算法中(3207 个变量)?

我不知道从哪里开始。另外,如果有更好的方法可以做到这一点,我会全力以赴。我一直在研究如何最好地解决这个问题,并且可以使用很多相似性指标,但我一直坚持如何开始,因为需要使用的列太多。

1个回答

DBSCAN 聚类算法有一个内置的 Jaccard 距离度量。

from sklearn.cluster import DBSCAN
db = DBSCAN( metric='jaccard' ).fit(X)
labels = db.labels_

# Number of clusters in labels, ignoring noise if present.
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)

X您要使用的相关列的数据集在哪里。