public void Train()
{
/*
* in trainData: data[i,.,.,.] = vector
* trainClasses: classes[i] = class
*/
List<KeyValuePair<ColorPair, CardColor>> pairs = new List<KeyValuePair<ColorPair, CardColor>>(GenerateTrainPairs());
#region Generate the traning data and classes
Matrix<float> bgrTraining = new Matrix<float>(pairs.Count, 3);
Matrix<float> hsvTraining = new Matrix<float>(pairs.Count, 3);
Matrix<float> colorClasses = new Matrix<float>(pairs.Count, 1);
for (int i = 0; i < pairs.Count; i++)
{
bgrTraining[i, 0] = (float)pairs[i].Key.Bgr.Blue;
bgrTraining[i, 1] = (float)pairs[i].Key.Bgr.Green;
bgrTraining[i, 2] = (float)pairs[i].Key.Bgr.Red;
hsvTraining[i, 0] = (float)pairs[i].Key.Hsv.Hue;
hsvTraining[i, 1] = (float)pairs[i].Key.Hsv.Satuation;
hsvTraining[i, 2] = (float)pairs[i].Key.Hsv.Value;
colorClasses[i, 0] = (float)(int)pairs[i].Value;
}
#endregion
bgrClassifier = new KNearest(bgrTraining, colorClasses, null, false, 10);
hsvClassifier = new KNearest(hsvTraining, colorClasses, null, false, 10);
try
{
bgrClassifier.Save("bgr.txt");
hsvClassifier.Save("hsv.txt");
}
catch (Exception)
{
}
}