如何从点簇中识别线?

2024-05-18 04:28:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构造一个自动编码器,将燃烧数据集的维数从17降到2。你知道吗

Three observable lines

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

我已经把DBSCAN看作一种层次聚类方法(例如ashere)。我不确定它是否合适,但我的代码在这一点上失败了:

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万点)。你知道吗


Tags: 数据方法forsizewithcol编码器sat
1条回答
网友
1楼 · 发布于 2024-05-18 04:28:15

您需要一次绘制一个簇。你知道吗

很遗憾,Matplotlib不接受颜色数组。你知道吗

因此它抱怨c参数。你知道吗

为什么要缩小到二维?你试过把原来的17维空间聚类吗?在2维,使用非线性映射,您可能损失了太多。你知道吗

相关问题 更多 >