/// <summary>
        /// Installs the KMeanFunctionRecognitionModule in the LearningApi pipeline.
        /// </summary>
        /// <param name="api"></param>
        /// <param name="settings"></param>
        /// <returns></returns>
        public static LearningApi UseKMeansFunctionRecognitionModule(this LearningApi api, ClusteringSettings settings)
        {
            var alg = new KMeansFunctionRecognitionAlgorithm(settings);

            api.AddModule(alg, "KMeanFunctionRecognitionModule");
            return(api);
        }
        public void Test_OptimalNumberOfClusters_TwoFunctions()
        {
            int numAttributes  = 3;
            int MinNumClusters = 2;
            int MaxNumClusters = 10;
            int maxCount       = 300;

            double[] Fmins;

            // directory to load
            string loadDirectory = rootFolder + "Functions\\";

            string functionA = "SIN_SIN X";
            string functionB = "SIN_COS X";

            // load Data
            double[][] loadedSimFunctions1 = Helpers.LoadFunctionData(loadDirectory + functionA + "\\NRP5-10\\" + functionA + " SimilarFunctions Normalized NRP5-10.csv");
            double[][] loadedSimFunctions2 = Helpers.LoadFunctionData(loadDirectory + functionB + "\\NRP5-10\\" + functionB + " SimilarFunctions Normalized NRP5-10.csv");

            ClusteringSettings settings = new ClusteringSettings(maxCount, MinNumClusters, numAttributes, KmeansAlgorithm: 2);

            int recNumClusters = KMeansFunctionRecognitionAlgorithm.OptimalNumberOfClusters_TwoFunctions(loadedSimFunctions1, loadedSimFunctions2, settings, MinNumClusters, MaxNumClusters, out Fmins);
        }