private void btnLoad_Click(object sender, EventArgs e)
{
lbStatus.Text = "Loading data. This may take a while...";
Application.DoEvents();
// Load optdigits dataset into the DataGridView
StringReader reader = new StringReader(Resources.optdigits_tra);
int trainingStart = 0;
int trainingCount = 1000;
int testingStart = 1000;
int testingCount = 1000;
dgvTrainingSource.Rows.Clear();
dgvAnalysisTesting.Rows.Clear();
int c = 0;
int trainingSet = 0;
int testingSet = 0;
while (true)
{
char[] buffer = new char[(32 + 1) * 32]; // 32 chars + '\n'
int read = reader.ReadBlock(buffer, 0, buffer.Length);
string label = reader.ReadLine();
if (read < buffer.Length || label == null) break;
if (c > trainingStart && c <= trainingStart + trainingCount)
{
Bitmap bitmap = Features.Extract(new String(buffer));
double[] features = Features.Extract(bitmap);
int clabel = Int32.Parse(label);
dgvTrainingSource.Rows.Add(bitmap, clabel, features);
trainingSet++;
}
else if (c > testingStart && c <= testingStart + testingCount)
{
Bitmap bitmap = Features.Extract(new String(buffer));
double[] features = Features.Extract(bitmap);
int clabel = Int32.Parse(label);
dgvAnalysisTesting.Rows.Add(bitmap, clabel, null, features);
testingSet++;
}
c++;
}
lbStatus.Text = String.Format(
"Dataset loaded (training: {0} / testing: {1}). Click Run training to start the training.",
trainingSet, testingSet);
btnSampleRunAnalysis.Enabled = true;
}