如何使用MeanShift聚类技术消除噪音?

时间:2015-06-26 15:15:07

标签: python scikit-learn cluster-analysis k-means mean-shift

我使用meanshift群集来从输入数据中删除不需要的噪音。 Data can be found here。这是我到目前为止所尝试的......

$(document).ready(function() {
  var input = document.getElementsByTagName('input')[0];
  var svg = $('#svgFile').svg({loadURL: 'img/media_stroke.svg'});


  for (i=0; i < svg.length; i++) {
    var g = document.getElementsByTagName('g');
    var g1 = [{0:g}];

    console.log(g1);

    // var g1 = document.getElementById('group1').style.visibility = "hidden";

    // var re = [{0:g}];

    // console.log(re);


  }



  function InputVal() {
    this.number = 
      $('input');
        var change = input.addEventListener('change', function() {
          var value = this.value

          console.log(value);

          if (value == 23) {

            alert('wow dumb')

          }

        }, false);
  }

  InputVal();

});
尝试了一些不同的带宽值后,我只得到了1个簇...但是图中的异常值和噪声假设在不同的簇中。

enter image description here

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

enter image description here

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:1)

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

统计删除

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

enter image description here

确定性移除(基于半径)

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

enter image description here

答案 1 :(得分:0)

平均移动并不意味着去除低密度区域。

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

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

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