示例#1
0
        ClusterOutput DivideSpace1DJury(List <string> list)
        {
            ClusterOutput outC, finalOut = new ClusterOutput();

            outC = jury.JuryOptWeights(list);
            double        dev    = CalcStandDev(outC);
            List <string> clust1 = new List <string>();
            List <string> clust2 = new List <string>();

            dev += dev;

            if (useKMeans)
            {
                clust1.Add(outC.juryLike[0].Key);
                clust1.Add(outC.juryLike[outC.juryLike.Count - 1].Key);
                kMeans km = new kMeans(dMeasure);
                return(km.kMeansRun(kMeansIter, list, clust1));
            }
            else
            {
                for (int i = 0; i < outC.juryLike.Count; i++)
                {
                    if (i < outC.juryLike.Count / 2)
                    {
                        clust1.Add(outC.juryLike[i].Key);
                    }
                    else
                    {
                        clust2.Add(outC.juryLike[i].Key);
                    }
                }

                finalOut.clusters = new List <List <string> >();

                finalOut.clusters.Add(clust1);
                finalOut.clusters.Add(clust2);
            }
            return(finalOut);
        }
示例#2
0
        ClusterOutput DivideSpaceHamming(List <string> list)
        {
            ClusterOutput output = new ClusterOutput();

            Dictionary <string, int> aux  = new Dictionary <string, int>();
            ClusterOutput            outC = jury.JuryOptWeights(list);

            if (outC == null)
            {
                return(null);
            }

            List <string> clust1 = new List <string>();
            List <string> clust2 = new List <string>();


            //consensus.ToConsensusStates(list, jury.GetStructureStates(outC.juryLike[0].Key));
            consensus.ToConsensusStates(list, outC.juryLike[0].Key);
            foreach (var item in list)
            {
                aux.Add(item, consensus.distanceOrdered[item]);
            }

            if (useKMeans)
            {
                clust1.Add(outC.juryLike[0].Key);
                var item = aux.OrderByDescending(j => j.Value);
                int dist = item.First().Value;
                foreach (var ll in item)
                {
                    if (dist != ll.Value)
                    {
                        break;
                    }
                    else
                    {
                        clust2.Add(ll.Key);
                    }
                }
                Dictionary <string, double> dic = new Dictionary <string, double>();
                foreach (var it in outC.juryLike)
                {
                    dic.Add(it.Key, it.Value);
                }
                double min = Double.MaxValue;
                string rem = "";
                foreach (var it in clust2)
                {
                    if (dic[it] < min)
                    {
                        min = dic[it];
                        rem = it;
                    }
                }
                clust1.Add(rem);

                kMeans km = new kMeans(dMeasure);
                return(km.kMeansRun(kMeansIter, list, clust1));
            }
            else
            {
                int i = 0;
                foreach (var item in aux.OrderBy(j => j.Value))
                {
                    if (i < list.Count() / 2)
                    {
                        clust1.Add(item.Key);
                    }
                    else
                    {
                        clust2.Add(item.Key);
                    }
                    i++;
                }


                output.clusters = new List <List <string> >();

                output.clusters.Add(clust1);
                output.clusters.Add(clust2);
            }
            return(output);
        }
示例#3
0
        ClusterOutput DivideSpaceHamming(List<string> list)
        {
            ClusterOutput output=new ClusterOutput();

            Dictionary<string, int> aux = new Dictionary<string, int>();
            ClusterOutput outC = jury.JuryOptWeights(list);

            if (outC == null)
                return null;

            List<string> clust1 = new List<string>();
            List<string> clust2 = new List<string>();
           

            //consensus.ToConsensusStates(list, jury.GetStructureStates(outC.juryLike[0].Key));
            consensus.ToConsensusStates(list,outC.juryLike[0].Key);
            foreach (var item in list)
                aux.Add(item, consensus.distanceOrdered[item]);

            if (useKMeans)
            {
                clust1.Add(outC.juryLike[0].Key);
                var item = aux.OrderByDescending(j => j.Value);
                int dist = item.First().Value;
                foreach (var ll in item)
                {
                    if (dist != ll.Value)
                        break;
                    else
                        clust2.Add(ll.Key);
                }
                Dictionary<string, double> dic = new Dictionary<string, double>();
                foreach (var it in outC.juryLike)
                    dic.Add(it.Key, it.Value);
                double min = Double.MaxValue;
                string rem = "";
                foreach (var it in clust2)
                {
                    if (dic[it] < min)
                    {
                        min = dic[it];
                        rem = it;
                    }
                }
                clust1.Add(rem);

                kMeans km = new kMeans(dMeasure);
                return km.kMeansRun(kMeansIter,list, clust1);

            }
            else
            {
               


                int i = 0;
                foreach (var item in aux.OrderBy(j => j.Value))
                {

                    if (i < list.Count() / 2)
                        clust1.Add(item.Key);
                    else
                        clust2.Add(item.Key);
                    i++;
                }


                output.clusters = new List<List<string>>();

                output.clusters.Add(clust1);
                output.clusters.Add(clust2);
            }
            return output;
            

        }
示例#4
0
        ClusterOutput DivideSpace1DJury(List<string> list)
        {
            
            ClusterOutput outC,finalOut=new ClusterOutput();

            outC=jury.JuryOptWeights(list);
            double dev = CalcStandDev(outC);
            List<string> clust1 = new List<string>();
            List<string> clust2 = new List<string>();

            dev += dev;

            if (useKMeans)
            {
                clust1.Add(outC.juryLike[0].Key);
                clust1.Add(outC.juryLike[outC.juryLike.Count - 1].Key);
                kMeans km = new kMeans(dMeasure);
                return km.kMeansRun(kMeansIter,list, clust1);

            }
            else
            {
                for (int i = 0; i < outC.juryLike.Count; i++)
                    if(i<outC.juryLike.Count / 2)
                        clust1.Add(outC.juryLike[i].Key);
                    else
                        clust2.Add(outC.juryLike[i].Key);

                finalOut.clusters = new List<List<string>>();

                finalOut.clusters.Add(clust1);
                finalOut.clusters.Add(clust2);
            }
            return finalOut;
        }