private static void Teach(string teachingSamplesFolder, string fileToSaveNetwork, string fileToSaveCoder = null, double teachingSpeed = 0.5)
 {
     var teachingSets = (new FolderTeachingSetsLoader()).Load(teachingSamplesFolder);
     var coder = new NetworkOutputCoder(teachingSets);
     var samples = TeachingSamplesFactory.GetSamples(teachingSets, coder);
     var network = KohonenNetworkFactory.Get(samples.First().Input.Length, coder.CodingTableCount);
     var teacher = new KohonenNetworkTeacher(samples, teachingSpeed);
     teacher.Teach(network);
     (new KohonenNetworkSaver()).Save(fileToSaveNetwork, network);
     if (fileToSaveCoder != null)
     {
         (new NetworkOutputCoderSaver()).Save(fileToSaveCoder, coder);
     }
 }