【问题标题】:Setting conditions for a scikit learn agglomerative clustering algorithmscikit learn 凝聚聚类算法的设置条件
【发布时间】:2021-09-16 23:48:29
【问题描述】:

我使用凝聚聚类算法对 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 或任何其他数字。

【问题讨论】:

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


    【解决方案1】:

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

    df.groupby('column_name')
    

    然后,如果您想要更小的集群,您可以为每个组使用一个集群算法。

    【讨论】:

      猜你喜欢
      • 2017-08-06
      • 1970-01-01
      • 2017-06-09
      • 2019-10-20
      • 2016-11-11
      • 2020-03-21
      • 2016-09-10
      • 2015-02-20
      • 2015-11-20
      相关资源
      最近更新 更多