scikit学习凝聚聚类算法的设置条件

时间:2021-07-06 10:33:58

标签: python machine-learning scikit-learn hierarchical-clustering unsupervised-learning

我使用凝聚聚类算法对 51x56 数据集进行聚类。该算法有效,但我想为聚类添加一个条件。为了将数据点放入同一个集群中,我需要特定列中的值相同。

z=df.apply(lambda x: pd.factorize(x)[0])
cluster = AgglomerativeClustering(n_clusters=None,distance_threshold=(10), affinity='euclidean', linkage='ward')
cluster.fit_predict(z)

z 是一个分解数据框。该数据帧的一部分如下所示。

0       0       0       0       0  ...        0       -1       -1          -1
1       0       0       0       0  ...       -1       -1       -1          -1
2       0       0       0       0  ...        1       -1       -1          -1
3       0       0       0       0  ...       -1       -1       -1          -1
4       0       0       0       0  ...        0       -1       -1          -1
5       0       0       0       0  ...        0       -1       -1          -1
6       0       0       0       0  ...        0       -1       -1          -1
7       0       0       0       0  ...        0       -1       -1          -1
8       0       0       0       0  ...        0       -1       -1          -1
9       0       0       0       0  ...       -1       -1       -1          -1
10      0       1       1       1  ...        0       -1       -1          -1
11      0       1       1       1  ...       -1       -1       -1          -1
12      0       2       1       2  ...        0       -1       -1          -1
13      0       2       1       2  ...       -1       -1       -1          -1
14      0       3       1       3  ...        0       -1       -1          -1
15      0       3       1       3  ...       -1       -1       -1          -1
16      1       4       1       4  ...        0       -1       -1          -1
17      1       4       1       4  ...        1       -1       -1          -1

假设第 3 列是我要为其指定条件的列。例如,我目前得到的是第 9 行和第 10 行被放入同一个集群中。但是查看它们在第 3 列中的值,您可以看到第 9 行的值为 0,第 10 行的值为 1。此值是 0 或 1 或任何其他数字。

1 个答案:

答案 0 :(得分:0)

尽量不使用聚类算法,而只是按特定列对值进行分组:

df.groupby('column_name')

然后,如果你想要更小的集群,你可以对每个组使用一个聚类算法。

相关问题