使用附加分类变量

时间:2017-11-23 14:37:52

标签: python image-processing cluster-analysis image-segmentation

有一个细分问题,我想帮助一下。
我试图在二维空间中分割一大组点,这也有一个分类变量。主要分段应通过聚类空间数据来完成,如有必要,应根据分类变量进一步划分聚类。

这是一个例子:
假设我们有一个城市房屋地理坐标的数据集。除了每个房子的位置,我们也知道它有哪种颜色。如果我们将绘制房屋的位置和它们的颜色,我们将得到下面的图像。你可以看到这个城镇有三个街区,其中两个在地理上很难分开,但根据它们的外观明显不同。

Picture of three clusters. One is clearly separate, the other two border but can be separated based on colour (green on one side, orange and purple on the other

上面的例子很难用像DBScan或K-means这样的聚类算法进行分割,这种算法不会考虑分类变量。此外,我们不能分开紫色和橙色的房子,因为两者都可以在同一个社区找到。使用gower的距离在多维空间中聚类也很困难,因为这可能导致将具有奇怪颜色的房屋分配给其地理范围之外的聚类。

这个问题的好方法是什么?是否有任何python(或R)实现的聚类算法可以解决这类问题?或者计算机视觉方法是否更合适?

欢迎任何意见。

1 个答案:

答案 0 :(得分:0)

另一种方法是对所有颜色子集分别运行DBSCAN,获得大量推定的邻域,然后根据集合包含来获取该集合的最小元素。

在上面的例子中:

  • 绿色给你西南,
  • 蓝色,红色和蓝色+红色给你了 北部和东南部,
  • 绿色+红色/蓝色/两者都给你北方和 南方(两个正确的社区的合并),然后你过滤 采取最小的元素,从南方出来。