Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit a724b788 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

adding testcase for meanshift clustering - not yet finished

parent 5a784e14
No related branches found
No related tags found
No related merge requests found
......@@ -31,9 +31,9 @@ namespace TUGraz.VectoCore.Utils
clusters[i] = new Cluster(min + (i + 0.5) * clusterDistance);
}
var iterationCount = 0;
IterationCount = 0;
var updated = true;
while (iterationCount++ < MaxIterations && updated) {
while (IterationCount++ < MaxIterations && updated) {
for (var clusterIdx = 0; clusterIdx < ClusterCount; clusterIdx++) {
var minDist = double.MaxValue;
var minIdx = -1;
......@@ -58,6 +58,8 @@ namespace TUGraz.VectoCore.Utils
return clusters.Select(c => c.Center).Distinct(new ClusterComparer(clusterTolerance)).ToArray();
}
public int IterationCount { get; protected set; }
public struct Cluster
{
private int _count;
......
......@@ -43,6 +43,13 @@ namespace TUGraz.VectoCore.Tests.Algorithms
[TestFixture]
public class DelaunayMapTest
{
[OneTimeSetUp]
public void RunBeforeAnyTests()
{
Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
}
[TestCase]
public void Test_Simple_DelaunayMap()
{
......
......@@ -18,18 +18,29 @@ namespace TUGraz.VectoCore.Tests.Algorithms
var entries = new List<double>();
var rnd = new Random(centers.Length);
foreach (var center in centers) {
entries.Add(center + rnd.NextDouble() * 80 - 40);
var sum = 0.0;
for (var i = 0; i < 30; i++) {
var val = center + rnd.NextDouble() * 20 - 10;
sum += val;
entries.Add(val);
}
Console.WriteLine(sum / 30);
}
var clusterer = new MeanShiftClustering();
var clusters = clusterer.FindClusters(entries.ToArray(), 0.1);
Console.WriteLine(string.Join(", ", entries));
var clusterer = new MeanShiftClustering() {
ClusterCount = 8
};
var clusters = clusterer.FindClusters(entries.ToArray(), 10);
Console.WriteLine(clusterer.IterationCount);
Console.WriteLine(string.Join(", ",centers));
Console.WriteLine(string.Join(", ", clusters));
Assert.AreEqual(centers.Length, clusters.Length);
foreach (var center in centers) {
Assert.IsTrue(clusters.Any(x => Math.Abs(center - x) < 1));
Assert.IsTrue(clusters.Any(x => Math.Abs(center - x) < 5));
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment