-1

我正在使用 meanshift 聚类从我的输入数据中去除不需要的噪声。 数据可以在这里找到。这是我到目前为止所尝试的..

import numpy as np
from sklearn.cluster import MeanShift
data = np.loadtxt('model.txt', unpack = True) 
## data size is [3X500]
ms = MeanShift()
ms.fit(data)

在尝试了一些不同的带宽值之后,我只得到了 1 个集群。但图片中的异常值和噪声假设在不同的集群中。

在此处输入图像描述

当带宽减少一点时,我最终得到了这个......这又不是我想要的。

在此处输入图像描述

谁能帮我这个?

4

3 回答 3

1

您可以在使用均值偏移之前删除异常值。

统计删除

例如,为每个点确定要分析的邻居数量(例如 50)和标准偏差乘数(例如 1)。与查询点的平均距离大于 1 个标准差的所有点都将被标记为异常值并被删除。此技术在 libpcl 中使用,在 pcl::StatisticalOutlierRemoval 类中,可以在此处找到教程。

在此处输入图像描述

确定性去除(基于半径)

一种更简单的技术在于指定半径 R 和最小邻居数 N。半径为 R 的邻居少于 N 个的所有点都将被标记为异常值并被删除。此技术也用于 libpcl 中的 pcl::RadiusOutlierRemoval 类中,可以在此处找到教程。

在此处输入图像描述

于 2015-07-05T01:43:07.733 回答
0

均值漂移并不意味着去除低密度区域。

它试图将所有数据移动到最密集的区域。

如果有一个最密集的点,那么所有东西都应该移到那里,你只会得到一个集群。

尝试不同的方法。也许首先删除异常值。

于 2015-06-26T20:25:48.267 回答
-1

将他的参数设置为 false cluster_allbool, default=True 如果为 true,则所有点都被聚集,即使是那些不在任何内核中的孤儿。孤儿被分配给最近的内核。如果为 false,则给孤儿集群标签 -1。

于 2021-10-19T17:30:15.410 回答