【问题标题】:How to identify lines from clusters of points?如何从点簇中识别线?
【发布时间】:2019-10-10 20:47:40
【问题描述】:

我正在构建一个自动编码器,以将燃烧数据集的维度从 17 降低到 2。

如上图所示,有一定的趋势——你可以看到大约三行。我想将数据(无监督)分成线簇,以便将来的测试数据与之关联,并且正在努力寻找一种方法来做到这一点。

我已经将 DBSCAN 视为一种层次聚类方法(例如 here)。我不确定它是否合适,但我的代码此时失败:

palette = sns.color_palette()
cluster_colors = [sns.desaturate(palette[col], sat)
                  if col >= 0 else (0.5, 0.5, 0.5) for col, sat in
                  zip(clusterer.labels_, clusterer.probabilities_)]

plt.scatter(z[0], z[1], c=cluster_colors, **plot_kwds)

其中z[0]z[1] 是聚类数据的两个维度。错误是:

'ValueError: 'c' argument has 100 elements, which is not acceptable for use with 'x' with size 2, 'y' with size 2.'

如果您有建议的替代方案,请告诉我。此外,我的数据很大(> 100 万个点)。

【问题讨论】:

    标签: python cluster-analysis hierarchical-clustering autoencoder dbscan


    【解决方案1】:

    您需要一次绘制一个集群。

    不幸的是,Matplotlib 不接受颜色数组。

    因此它抱怨c 参数。

    附: 为什么减少到二维?你试过聚类原始的 17 维空间吗?在二维情况下,使用非线性映射,您可能损失了太多。

    【讨论】:

    • 如何解释 17 维集群?据我所知,聚类是关于最小化某种形式的另一种距离(例如欧几里得距离)。这么高的维度,这不是没有意义吗?
    • 17 在距离方面并不是特别高。您甚至可以使用散点图矩阵等。
    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多