private static void TimelessDenStreamTest() { var filePath = $"{Environment.CurrentDirectory}/Data/Synthesis/DataSteamGenerator/data.synthetic.json"; var dataStream = ContinuousDataReader.ReadSyntheticEuclidean(filePath); var denStream = new TimelessDenStream <EuclideanPoint>( Similarity.EuclideanDistance, Similarity.EuclideanDistance); var terminate = denStream.MaintainClusterMap(); foreach (var p in dataStream) { denStream.Add(p); } Thread.Sleep(2000); foreach (var p in dataStream.TakeLast(110)) { denStream.Remove(p); } var clusters = denStream.Cluster(); terminate(); Console.WriteLine(clusters.Pretty()); Console.WriteLine(clusters.Length); }
private static void TimelessDenStreamMCTest() { var filePath = $"{Environment.CurrentDirectory}/Data/Synthesis/DataSteamGenerator/data.synthetic.json"; var dataStream = ContinuousDataReader.ReadSyntheticEuclidean(filePath); var denStream = new TimelessDenStream <EuclideanPoint>( Similarity.EuclideanDistance, Similarity.EuclideanDistance); foreach (var p in dataStream) { denStream.Add(p); } denStream.Cluster(); // foreach (var p in dataStream.TakeLast(110)) // { // denStream.Remove(p); // } // // denStream.Cluster(); var mcs = denStream.MicroClusters; var mcPoints = new List <EuclideanPoint>(); mcs.ForEach(mc => mcPoints.AddRange(mc.Points)); File.WriteAllText($"{Environment.CurrentDirectory}/Data/Synthesis/ClusterVisualization/mcs.json", JsonConvert.SerializeObject(mcs)); File.WriteAllText($"{Environment.CurrentDirectory}/Data/Synthesis/ClusterVisualization/mcPoints.json", JsonConvert.SerializeObject(mcPoints)); }
private static void DbScanTest() { var filePath = $"{Environment.CurrentDirectory}/Data/Synthesis/DataSteamGenerator/data.synthetic.json"; var dataStream = ContinuousDataReader.ReadSyntheticEuclidean(filePath); var denStream = new TimelessDenStream <EuclideanPoint>( Similarity.EuclideanDistance, Similarity.EuclideanDistance); foreach (var p in dataStream) { denStream.Add(p); } var scClustersAll = new List <dynamic>(); var clusters = denStream.Cluster(); var numClusters = 0; foreach (var cluster in clusters) { var k = numClusters; scClustersAll.AddRange(cluster.Select(p => new { x = p.X, y = p.Y, c = k })); numClusters++; } File.WriteAllText( $"{Environment.CurrentDirectory}/Data/Synthesis/ClusterVisualization/dbscanVisu/dbscan.json", JsonConvert.SerializeObject(scClustersAll)); }
public ActionResult GetClusters() { try { var eventClusters = new List <Streamer[]>(); // Cluster on geographical positions var geoClusters = _denStream.Cluster(); // Cluster on the stream descriptions foreach (var geoCluster in geoClusters) { if (geoCluster.Length > 10) // Shrinkage clustering requires a proper data set to function { eventClusters.AddRange(_shrinkageClustering.Cluster(geoCluster)); } else { eventClusters.Add(geoCluster); } } return(Ok(eventClusters)); } catch (Exception e) { if (_env.IsDevelopment() || TEST_ENV) { return(BadRequest(e.Message)); } return(BadRequest()); } }
public Streamer[][] GetClusters() { var eventClusters = new List <Streamer[]>(); // Cluster on geographical positions var geoClusters = _denStream.Cluster(); // Cluster on the stream descriptions foreach (var geoCluster in geoClusters) { eventClusters.AddRange(_shrinkageClustering.Cluster(geoCluster)); } return(eventClusters.ToArray()); }
public void Cluster_SameTwoPoints_OneCluster() { // [{"longitude":10.0,"latitude":20.0,"streamDescription":[0.0,1.0,0.0],"id":"Test","timeStamp":0}] var streamers = new[] { new Streamer(10.0f, 20.0f, new [] { 0.0f, 1.0f, 0.0f }, 0, "Test"), new Streamer(10.0f, 20.0f, new [] { 0.0f, 1.0f, 0.0f }, 0, "Test") }; DENSTREAM.Add(streamers); Thread.Sleep(3000); var clusters = DENSTREAM.Cluster(); Assert.That(clusters, Has.Exactly(1).Items); }