如何从点簇中识别线?

时间:2019-05-24 09:13:46

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

我正在构造一个自动编码器,以将燃烧数据集的维数从17减少到2。

Three observable lines

如上图所示,有某些趋势-您可以看到大约三行。我想将数据(无监督的)分成多个行簇,可以将这些簇与将来的测试数据相关联,并且正努力寻找一种方法来实现这一点。

我已经看过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万点)。

1 个答案:

答案 0 :(得分:0)

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

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

因此,它抱怨c参数。

P.s。 为什么缩小为2维?您是否尝试过将原始的17维空间聚类?在2维的情况下,使用非线性贴图,可能会损失太多。