我正在构造一个自动编码器,以将燃烧数据集的维数从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万点)。
答案 0 :(得分:0)
您需要一次绘制一个群集。
不幸的是,Matplotlib不接受颜色数组。
因此,它抱怨c
参数。
P.s。 为什么缩小为2维?您是否尝试过将原始的17维空间聚类?在2维的情况下,使用非线性贴图,可能会损失太多。