private void btnGenerateRandom_Click(object sender, EventArgs e)
{
k = (int)numClusters.Value;
// Generate data with n Gaussian distributions
double[][][] data = new double[k][][];
for (int i = 0; i < k; i++)
{
// Create random centroid to place the Gaussian distribution
double[] mean = Vector.Random(2, -6.0, +6.0);
// Create random covariance matrix for the distribution
double[,] covariance = Accord.Statistics.Tools.RandomCovariance(2, -5, 5);
// Create the Gaussian distribution
var gaussian = new MultivariateNormalDistribution(mean, covariance);
int samples = Accord.Math.Random.Generator.Random.Next(150, 250);
data[i] = gaussian.Generate(samples);
}
// Join the generated data
observations = Matrix.Stack(data);
// Update the scatter plot
CreateScatterplot(graph, observations, k);
// Forget previous initialization
kmeans = null;
}