我有多组数据,每组数据中都有一个有点香蕉形状的区域和两个密集 Blob 的区域。我已经能够使用 DBSCAN 算法将这些区域与其余数据区分开来,但我想使用监督算法让程序知道哪个簇是香蕉,以及哪两个簇是密集 Blob ,我不知道从哪里开始。
由于有 3 个类别(香蕉、 Blob ,两者都不是),因此进行两个单独的逻辑回归是否是最好的方法(评估它是香蕉还是非香蕉,以及它是 Blob 还是非 Blob )?或者有没有一种好方法将所有 3 个类别合并到一个神经网络中?
这是三个数据集。每个香蕉都是红色的。在第一个中,两个 Blob 是绿色和蓝色,在第二个中,两个 Blob 是青色和绿色,在第三个中,两个 Blob 是蓝色和绿色。我希望程序(现在已经区分了不同的区域),然后标记香蕉和 Blob 区域,这样我就不必每次运行代码时都手动选择它们。
最佳答案
当您使用python
时,最好的选择之一是从一些大型库开始,提供许多不同的方法,以便您可以选择最适合您的方法。其中一个库是 sklearn http://scikit-learn.org/stable/ .
回到问题本身。您应该尝试哪些模型?
- 支持向量机 - 该模型已经存在了一段时间,并成为许多领域的黄金标准,主要是由于其优雅的数学解释和易用性(与经典神经网络相比,它需要担心的参数要少得多)实例)。它是一个二元分类模型,但库会自动 create适合您的多分类器版本
- 决策树 - 非常容易理解,但创建了相当“粗糙”的决策边界
- 随机森林 - 统计社区中经常使用的模型,
- K 最近邻 - 最简单的方法,但如果您可以轻松定义数据的形状,它将提供非常好的结果,同时保持非常容易理解
当然还有很多其他的,但我建议从这些开始。它们都支持多类分类,因此您无需担心如何对三类进行编码问题,只需以两个矩阵x
和y
的形式创建数据即可> 其中 x
是输入值,y
是相应类的向量(例如,从 1
到 3
的数字)。
库中不同分类器的可视化:
所以这仍然是一个问题如何表示簇的形状 - 我们需要一个固定长度的实值向量,那么特征实际上可以表示什么?
- 质心(如果位置很重要)
- 偏度/峰度
- 协方差矩阵(或其特征值)(如果旋转很重要)
- 某种局部密度估计
- 一些统计数据的直方图(例如成对欧氏距离的直方图) 形状上的点对)
- 还有很多很多!
这里有相当全面的列表和详细的概述(对于三维对象): http://web.ist.utl.pt/alfredo.ferreira/publications/DecorAR-Surveyon3DShapedescriptors.pdf
描述一些描述符以及如何使它们缩放/位置/旋转不变(如果与此处相关)
关于python - 监督机器学习 : Classify types of clusters of data based on shape and density (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18279859/