Esempio n. 1
0
        public void ClusteringTest()
        {
            List <ClusteredData> datanew    = new List <ClusteredData>();
            EuclidianDistance    distance   = new EuclidianDistance();
            K_Means         k_means         = new K_Means(2, 0.1, distance);
            ClusterAnalysis clusterAnalysis = new ClusterAnalysis(k_means);

            datanew.Add(new ClusteredData(0, 0));
            datanew.Add(new ClusteredData(0, 20));
            datanew.Add(new ClusteredData(20, 0));
            datanew.Add(new ClusteredData(20, 20));

            var list = clusterAnalysis.Clustering(datanew);

            Assert.AreEqual(2, list.Count);

            var flag = from value in k_means.FinishesCentroids.Values
                       where (value.X == 0 && value.Y == 0) ||
                       (value.X == 0 && value.Y == 20) ||
                       (value.X == 20 && value.Y == 20) ||
                       (value.X == 20 && value.Y == 0) ||
                       (value.X == 10 && value.Y == 20) ||
                       (value.X == 0 && value.Y == 10) ||
                       (value.X == 20 && value.Y == 10) ||
                       (value.X == 0 && value.Y == 10)
                       select value;

            Assert.AreEqual(0.1, k_means.CoefficientTaboo);
            Assert.AreEqual(2, k_means.CountOfClusters);
            Assert.IsNotNull(flag);
        }
        static void Main(string[] args)
        {
            K_Means kmeans = new K_Means(2);

            kmeans.addDoc("平價牛排 淡水好店 吃吃喝喝 情侶約會 中價位 生日聚會 平價 節日聚會 家庭聚會 朋友聚會 吃到飽 異國料理 美式料理");
            kmeans.addDoc("平價 板橋美食 食記 小吃 單點式 麻辣鴨血 重慶路 涼麵 麻辣 鴨血 情侶約會 吃吃喝喝 涼皮 小吃店");
            kmeans.addDoc("客家美食 朋友聚會 客家菜 家庭聚會 苗栗 平價 預約 中價位 鶴山飯館 春酒 老店 單點式 免服務費 可包場 有包廂");
            kmeans.addDoc("下午茶 平價 免服務費 朋友聚會 景觀咖啡 巷弄隱密 家庭聚會 情侶約會 中價位 可帶寵物 無菜單 複合式 咖啡簡餐");
            kmeans.addDoc("台中泰式餐廳 中價位 泰式料理 月亮蝦餅 要預訂 單點式 魔幻廚房 家庭聚會 吃吃喝喝 朋友聚會 免服務費 節日聚會 大份量 泰式台菜 生日聚會");
            kmeans.addDoc("朋友聚會 中價位 吃吃喝喝 家庭聚會 單點式 印度料理 烤餅 平價 精緻料理 咖哩 可刷卡 生日聚會 異國料理 海尼根Light精選店家");
            kmeans.addDoc("婚宴 平價 家庭聚會 吃吃喝喝 單點式 可包場 有包廂 老店 主題特色餐廳 景觀餐廳");
            kmeans.addDoc("吃到飽 下午茶 有服務費 中價位 朋友聚會 巷弄隱密 情侶約會 家庭聚會 節日聚會 生日聚會 Buffet 複合式 複合式料理 2008新開店");
            kmeans.addDoc("情侶約會 法國料理 高價位 精緻料理 可刷卡 無菜單 節日聚會 家庭聚會 老店 吃吃喝喝 馬卡龍 朋友聚會 中價位 異國料理 法式料理");
            kmeans.addDoc("家庭聚會 烏龍麵 吃吃喝喝 單點式 贊岐烏龍麵 情侶約會 平價 朋友聚會 精緻料理 台南美食 贊岐廚房 日本料理 日式定食 台南餐廳 中價位");

            kmeans.train();

            //kmeans.getResult();

            kmeans.showResult();
            Console.ReadKey();
        }
        public RBF(int K, int numOfEpocks, double learningRate, double maxError, List <List <double> > trainingSamples, List <List <double> > trainingLabels, List <List <double> > testSamples, List <List <double> > testLabels)
        {
            this.numOfEpocks     = numOfEpocks;
            this.trainingSamples = trainingSamples;
            this.trainingLabels  = trainingLabels;
            this.testSamples     = testSamples;
            this.testLabels      = testLabels;
            this.maxError        = maxError;
            this.learningRate    = learningRate;
            Centroids            = new List <List <double> >(); //[NumOfCluster][NumOfFeatures (means)]
            Random rnd     = new Random(Guid.NewGuid().GetHashCode());
            int    counter = K;                                 // Num of Clusters

            while (counter-- > 0)
            {
                int index = rnd.Next(trainingSamples.Count);
                Centroids.Add(trainingSamples[index]);
            }

            KMean    = new K_Means(ref Centroids, trainingSamples);
            Variance = KMean.GetVariance;
            ////

            ////
            List <int> numOfNeuronsPerLayer = new List <int>();

            backpropagation = new Backpropagation();

            numOfNeuronsPerLayer.Add(K);
            numOfNeuronsPerLayer.Add(3);

            this.neuralNetwork = new FeedforwardNeuralNetwrok(2);
            this.neuralNetwork.setNetwork(numOfNeuronsPerLayer);

            this.neuralNetwork.LMSsetLayer(1, new IdentityFunction());
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            List <ClusteredData> datanew    = new List <ClusteredData>();
            EuclidianDistance    distance   = new EuclidianDistance();
            K_Means         k_means         = new K_Means(2, 0.1, distance);
            ClusterAnalysis clusterAnalysis = new ClusterAnalysis(k_means);

            datanew.Add(new ClusteredData(0, 0));
            datanew.Add(new ClusteredData(0, 20));
            datanew.Add(new ClusteredData(20, 0));
            datanew.Add(new ClusteredData(20, 20));

            var list = clusterAnalysis.Clustering(datanew);

            /*
             * List<ClusteredData> datanew = new List<ClusteredData>();
             * List<K_Means> k_meansList = new List<K_Means>();
             * List<List<Cluster>> clustersList = new List<List<Cluster>>();
             * System.Diagnostics.Stopwatch myStopwatch = new System.Diagnostics.Stopwatch();
             * EuclidianDistance distance = new EuclidianDistance();
             *
             * datanew.Add(new ClusteredData(0,0));
             * datanew.Add(new ClusteredData(0, 20));
             * datanew.Add(new ClusteredData(20, 0));
             * datanew.Add(new ClusteredData(20, 20));
             *
             * var ewrt = datanew.Select(Er => Er.X);
             * var ety = ewrt.Average();
             *
             *
             *
             * var e = datanew.Average(er => er.X);
             *
             *
             * myStopwatch.Start(); //запуск
             * for (var i = 0; i < 1000; i++)
             * {
             *  K_Means k_means = new K_Means(2, 0.1, distance);
             *  clustersList.Add(k_means.Clustering(datanew));
             *  k_meansList.Add(k_means);
             *  Thread.Sleep(10);
             *
             *  var flag = k_means.FinishesCentroids.ContainsValue(new Centroid(0, 0));
             *  var flag1 = k_means.FinishesCentroids.ContainsValue(new Centroid(0, 20));
             *  var flag2 = k_means.FinishesCentroids.ContainsValue(new Centroid(20, 20));
             *  var flag3 = k_means.FinishesCentroids.ContainsValue(new Centroid(20, 0));
             * }
             * myStopwatch.Stop();
             *
             * var fulltime = myStopwatch.ElapsedMilliseconds;
             * double Onetime = myStopwatch.ElapsedMilliseconds/1000.0;
             *
             * int a = 0;
             * int b = 0;
             * int c = 0;
             * int d = 0;
             *
             * foreach (var list in clustersList)
             * {
             *  a += list.Count(q => q.Data.Count == 3);
             *  b += list.Count(q => q.Data.Count == 2);
             *  c += list.Count(q => q.Data.Count == 1);
             *  d += list.Count(q => q.Data.Count == 0);
             * }
             * b = b / 2;
             * var ads = new Cluster(1, new Centroid(1, 10));
             * //ads.IntraClusterDistance();
             *
             * //// Поиск объектов класса Cluster в списке optimumClusters с максимальным внутрикластерным расcтоянием
             * //var nonOptimumClusters = from list in clustersList // определяем каждый объект из clusters как cluster
             * //                         where
             * //                         select cluster.IntraClusterDistance();// выбираем объект
             *
             */
        }