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()); //} } }
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; }