private void buttonClusterFeeds_Click(object sender, EventArgs e) { if (_feedData == null) { XtraMessageBox.Show("There is no data create cluster!", "Uh Oh!", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Cursor = Cursors.WaitCursor; int g = (int)spinFeedClusterCount.Value; var kmeans = new KMeans <Feed>(); var grouping = kmeans.Generate(_feedData, g); _feedDescription = kmeans.Description; for (int i = 0; i < grouping.Length; i++) { _feedData[i].Cluster = grouping[i] + 1; } gridFeeds.DataSource = _feedData; gridFeeds.RefreshDataSource(); Cursor = Cursors.Default; MessageBox.Show("Done!", "Result", MessageBoxButtons.OK, MessageBoxIcon.Information); }
public void Test_Feed_KMeans() { int groups = 4; Feed[] feeds = Feed.GetData(); Descriptor descriptor = Descriptor.Create <Feed>(); KMeans kmeans = new KMeans(); kmeans.Descriptor = descriptor; int[] grouping = kmeans.Generate(feeds, groups, new CosineDistance()); for (int i = 0; i < grouping.Length; i++) { feeds[i].Cluster = grouping[i]; } }
public void Test_Object_KMeans(int size) { Matrix X = GenerateData(size); var objects = X.GetRows() .Select(v => new AB { A = v[0], B = v[1] }) .ToArray(); var descriptor = Descriptor.Create <AB>(); KMeans model = new KMeans(); var clusters = model.Generate(descriptor, objects, 2, new EuclidianDistance()); Assert.Equal(2, clusters.Children.Length); Assert.Equal(size, clusters[0].Members.Length); Assert.Equal(size, clusters[1].Members.Length); }
public void Test_Numerical_KMeans(int size) { Matrix X = GenerateData(size); KMeans model = new KMeans(); var assignment = model.Generate(X, 2, new EuclidianDistance()); Assert.Equal(size * 2, assignment.Length); var a1 = assignment.First(); var a2 = assignment.Last(); for (int i = 0; i < size * 2; i++) { if (i < size) { Assert.Equal(a1, assignment[i]); } else { Assert.Equal(a2, assignment[i]); } } }
private void buttonClusteStudents_Click(object sender, EventArgs e) { if (_data == null) { XtraMessageBox.Show("There is no data create cluster!", "Uh Oh!", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } int g = (int)spinClusterCount.Value; var kmeans = new KMeans <Student>(); var grouping = kmeans.Generate(_data, g); for (int i = 0; i < grouping.Length; i++) { _data[i].Cluster = grouping[i] + 1; } gridStudent.DataSource = _data; gridStudent.RefreshDataSource(); MessageBox.Show("Done!", "Result", MessageBoxButtons.OK, MessageBoxIcon.Information); }