python - 如何从点簇中识别线?
问题描述
我正在构建一个自动编码器,以将燃烧数据集的维度从 17 减少到 2。
如上图所示,有一定的趋势——你可以看到大约三行。我想将数据(无监督)分成线簇,未来的测试数据可以与之相关联,并且正在努力寻找一种方法来做到这一点。
我已经将 DBSCAN 看作是一种层次聚类方法(例如这里)。我不确定它是否合适,但我的代码此时失败:
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万个点)。
解决方案
您需要一次绘制一个集群。
不幸的是,Matplotlib 不接受颜色数组。
因此它抱怨c
参数。
Ps为什么要减少到二维?你试过聚类原始的 17 维空间吗?在二维情况下,使用非线性映射,您可能损失了太多。
推荐阅读
- ios - 使用较少的半样板设置 UIView(或对象)的多个属性 - Swift
- javascript - 索引格式错误:int() 以 10 为底的无效文字
- node.js - 如何查询令牌并在云功能内发送推送通知?
- java - Wicket IValidator 的错误消息中的链接是否可能?
- reactjs - Nextjs 项目未编译为 ES5
- flutter - Flutter AnimatedList 和 AnimatedController
- mysql - Mysql连接mariadb容器失败
- excel - 如何复制公式结果
- react-bootstrap - 如何删除 react-bootstrap Carousel 动画并使其仅在点击时移动?
- visual-studio-code - VSCode remote-ssh 无法连接到 win server 2019