예제 #1
0
        public void Recalculate(
            ISign <double>[] signs,
            Region[] includedRegions,
            ICenterDeterminingAlgorithm <double> centerDeterminingAlgorithm)
        {
            if (includedRegions.Length > 0)
            {
                ICollection <KeyValuePair <Region, double[]> > regionsSigns =
                    new Collection <KeyValuePair <Region, double[]> >();

                foreach (Region region in includedRegions)
                {
                    regionsSigns.Add(new KeyValuePair <Region, double[]>(
                                         region, signs.Select(sign => sign.Calculate(region)).ToArray()));
                }

                SignsValues = new double[signs.Length];



                //for (int signIndex = 0; signIndex < signs.Length; signIndex++)
                //{
                //	SignsValues[signIndex] = centerDeterminingAlgorithm.Calculate(
                //		regionsSigns.Select(e => e[signIndex]).ToArray());
                //}
            }
        }
예제 #2
0
        public Kmedian(
            int clustersNumber,
            ISign <double>[] signs,
            IClusteringDistance <double> distance,
            IStartSignsVectorGenerator startSignVectorGenerator,
            ICenterDeterminingAlgorithm <double> centerDeterminingAlgorithm)
        {
            if (signs == null)
            {
                throw new ArgumentNullException("signs");
            }
            if (distance == null)
            {
                throw new ArgumentNullException("distance");
            }
            if (startSignVectorGenerator == null)
            {
                throw new ArgumentNullException("startSignVectorGenerator");
            }
            if (centerDeterminingAlgorithm == null)
            {
                throw new ArgumentNullException("centerDeterminingAlgorithm");
            }

            this.clustersNumber             = clustersNumber;
            this.signs                      = signs;
            this.distance                   = distance;
            this.startSignVectorGenerator   = startSignVectorGenerator;
            this.centerDeterminingAlgorithm = centerDeterminingAlgorithm;
        }