我使用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个簇...但是图中的异常值和噪声假设在不同的簇中。
当再减少带宽时,我最终得到了这个......这也不是我想要的。
任何人都可以帮我吗?
答案 0 :(得分:1)
您可以使用均值偏移删除之前的异常值
。例如,固定多个邻居以分析每个点(例如50)和标准偏差乘数(例如1)。距离查询点的平均距离大于1标准差的所有点都将被标记为异常值并被删除。这个技术在libpcl中使用,在类pcl :: StatisticalOutlierRemoval中,可以找到一个教程here。
更简单的技术在于指定半径R和最小数量的邻居N.具有少于N个半径为R的邻居的所有点将被标记为异常值并被移除。此技术也用于libpcl,类pcl :: RadiusOutlierRemoval,并且可以找到教程here。
答案 1 :(得分:0)
平均移动并不意味着去除低密度区域。
它尝试将所有数据移动到最密集的区域。
如果有一个最密集的点,那么一切都应该移动到那里,你只得到一个集群。
尝试不同的方法。也许首先删除的异常值。