python - 监督机器学习 : Classify types of clusters of data based on shape and density (Python)

标签 python machine-learning cluster-analysis supervised-learning

我有多组数据,每组数据中都有一个有点香蕉形状的区域和两个密集 Blob 的区域。我已经能够使用 DBSCAN 算法将这些区域与其余数据区分开来,但我想使用监督算法让程序知道哪个簇是香蕉,以及哪两个簇是密集 Blob ,我不知道从哪里开始。

由于有 3 个类别(香蕉、 Blob ,两者都不是),因此进行两个单独的逻辑回归是否是最好的方法(评估它是香蕉还是非香蕉,以及它是 Blob 还是非 Blob )?或者有没有一种好方法将所有 3 个类别合并到一个神经网络中?

这是三个数据集。每个香蕉都是红色的。在第一个中,两个 Blob 是绿色和蓝色,在第二个中,两个 Blob 是青色和绿色,在第三个中,两个 Blob 是蓝色和绿色。我希望程序(现在已经区分了不同的区域),然后标记香蕉和 Blob 区域,这样我就不必每次运行代码时都手动选择它们。

Data set 1 Data set 2 Data set 3

最佳答案

当您使用python时,最好的选择之一是从一些大型库开始,提供许多不同的方法,以便您可以选择最适合您的方法。其中一个库是 sklearn http://scikit-learn.org/stable/ .

回到问题本身。您应该尝试哪些模型?

  • 支持向量机 - 该模型已经存在了一段时间,并成为许多领域的黄金标准,主要是由于其优雅的数学解释和易用性(与经典神经网络相比,它需要担心的参数要少得多)实例)。它是一个二元分类模型,但库会自动 create适合您的多分类器版本
  • 决策树 - 非常容易理解,但创建了相当“粗糙”的决策边界
  • 随机森林 - 统计社区中经常使用的模型,
  • K 最近邻 - 最简单的方法,但如果您可以轻松定义数据的形状,它将提供非常好的结果,同时保持非常容易理解

当然还有很多其他的,但我建议从这些开始。它们都支持多类分类,因此您无需担心如何对三类进行编码问题,只需以两个矩阵xy的形式创建数据即可> 其中 x 是输入值,y 是相应类的向量(例如,从 13 的数字)。

库中不同分类器的可视化:

classifiers comparision

所以这仍然是一个问题如何表示簇的形状 - 我们需要一个固定长度的实值向量,那么特征实际上可以表示什么?

  • 质心(如果位置很重要)
  • 偏度/峰度
  • 协方差矩阵(或其特征值)(如果旋转很重要)
  • 某种局部密度估计
  • 一些统计数据的直方图(例如成对欧氏距离的直方图) 形状上的点对)
  • 还有很多很多!

这里有相当全面的列表和详细的概述(对于三维对象): http://web.ist.utl.pt/alfredo.ferreira/publications/DecorAR-Surveyon3DShapedescriptors.pdf

还有相当丰富的介绍: http://www.global-edge.titech.ac.jp/faculty/hamid/courses/shapeAnalysis/files/3.A.ShapeRepresentation.pdf

描述一些描述符以及如何使它们缩放/位置/旋转不变(如果与此处相关)

关于python - 监督机器学习 : Classify types of clusters of data based on shape and density (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18279859/

相关文章:

python - 为项目导入库

python - 省略自定义 Django 用户模型的密码字段

python - 使用 Python 验证 SSL 证书

algorithm - 可理解的聚类

Python KMeans Orange 框架

Python 'add' 函数问题 : why won't this work?

machine-learning - model.output.op 在 keras 中做什么?

opencv - 网格搜索(libsvm)中的交叉验证非常慢

machine-learning - 为什么VGG16网络中的卷积层是64层?又是如何确定的呢?

algorithm - 聚类数量未知的无监督聚类