public void SaveWeights(SOMNet network) { var totalPath = ConfigurationManager.AppSettings["Results"]; using (var file = new StreamWriter(totalPath)) { for (var i = 0; i < network.Count; i++) { file.WriteLine("<{0} , {1}>", network.GetNuronWeights(i).At(0, 0), network.GetNuronWeights(i).At(0, 1)); } } }
public override int Run(string[] remainingArguments) { InitializeArgumentsFromConfinIfItIsNecessary(); var inputs = _dataLoader.LoadCoordinates(_fileName); var normalizedInputs = inputs.Select(_matrixHelpers.Normalize).ToList(); var maxInputOne = normalizedInputs.Select(x => x.At(0, 0)).Max(); var maxInputTwo = normalizedInputs.Select(x => x.At(0, 1)).Max(); var network = new SOMNet(maxInputOne, maxInputTwo, inputs.Count); var rmax = 4; //var neighborhoodFunction = new Guassian(); var neighborhoodFunction = new Guassian(); var teacher = new Teacher(network, neighborhoodFunction, rmax); teacher.Learn(normalizedInputs); var order = new List <int>(); foreach (var input in inputs) { order.Add(network.GetIndexOfTheMostMatchesNeuron(input)); } var saver = new DataSaver(); saver.SaveWeights(network); saver.SaveNormalizedInputs(normalizedInputs); saver.SaveOrder(order); if (shouldVisual) { var orderlinesses = inputs.Select((x, i) => new Orderliness(order[i], x)).ToList(); var bm = _visualizer.Visualize(orderlinesses); bm.Save(ConfigurationManager.AppSettings["Visualization"]); } return(0); }
public Teacher(SOMNet network, INeighborhoodFunction neighborhoodFunction, int rmax) { _network = network; _neighborhoodFunction = neighborhoodFunction; _rmax = rmax; }