public static List <KMeansModel> ReadAllModels()
        {
            List <KMeansModel> models = new List <KMeansModel>();

            if (!Directory.Exists(ModelsDirectoryPath))
            {
                return(models);
            }

            List <string> paths = Directory.GetFiles(ModelsDirectoryPath).ToList();

            paths.Sort();

            Console.WriteLine();
            Console.WriteLine("Read models order:");
            paths.ForEach(Console.WriteLine);

            foreach (string path in paths)
            {
                try
                {
                    KMeansModel model = ReadKMeansModel(path);
                    models.Add(model);
                }
                catch (JsonReaderException)
                {
                    Console.WriteLine($"An error occured while reading json at path {path}");
                }
            }

            return(models);
        }
Пример #2
0
        /**
         * <summary> Training algorithm for K-Means classifier. K-Means finds the mean of each class for training.</summary>
         *
         * <param name="trainSet">  Training data given to the algorithm.</param>
         * <param name="parameters">distanceMetric: distance metric used to calculate the distance between two instances.</param>
         */
        public override void Train(InstanceList.InstanceList trainSet, Parameter.Parameter parameters)
        {
            var priorDistribution = trainSet.ClassDistribution();
            var classMeans        = new InstanceList.InstanceList();
            var classLists        = trainSet.DivideIntoClasses();

            for (var i = 0; i < classLists.Size(); i++)
            {
                classMeans.Add(classLists.Get(i).Average());
            }

            model = new KMeansModel(priorDistribution, classMeans, ((KMeansParameter)parameters).GetDistanceMetric());
        }
        public static void SaveKMeansModel(KMeansModel model, DateTime dateTime, int order)
        {
            if (!Directory.Exists(ModelsDirectoryPath))
            {
                Directory.CreateDirectory(ModelsDirectoryPath);
            }

            int    clustersCount = model.Centroids.Count;
            string date          = GetFormattedDate(dateTime);
            string fileName      = $"(model_k_means)(ord_{order})(k_{clustersCount})(date_{date}).json";
            string filePath      = $"{ModelsDirectoryPath}/{fileName}";

            SaveObject(filePath, model);
        }