//dataset can have class attribute
        public Agnes(HashSet <double[]> dataSet, bool hasClass)
        {
            _clusters      = new Clusters();
            _patternMatrix = new PatternMatrix();

            if (hasClass)
            {
                foreach (var item in dataSet)
                {
                    _pattern    = new Pattern();
                    _pattern.Id = _patternIndex;
                    _pattern.AddAttributes(item);
                    _pattern.RemoveAttributeAt(_pattern.GetDimension() - 1);                  //remove class atribute from attribute collection
                    _pattern.ClassAttribute = Convert.ToInt32(item[_pattern.GetDimension()]); //move class atribute to pattern.ClassAttribute (used for external validation indexes rand and jaccard)
                    _patternMatrix.AddPattern(_pattern);
                    _patternIndex++;
                }
            }
            else
            {
                foreach (var item in dataSet)
                {
                    _pattern    = new Pattern();
                    _pattern.Id = _patternIndex;
                    _pattern.AddAttributes(item);
                    _patternMatrix.AddPattern(_pattern);
                    _patternIndex++;
                }
            }
        }
        // dataset has no class attribute
        public Agnes(HashSet <double[]> dataSet)
        {
            _clusters      = new Clusters();
            _patternMatrix = new PatternMatrix();

            foreach (var item in dataSet)
            {
                _pattern    = new Pattern();
                _pattern.Id = _patternIndex;
                _pattern.AddAttributes(item);
                _patternMatrix.AddPattern(_pattern);
                _patternIndex++;
            }
        }
Пример #3
0
        //add a single pattern to a cluster
        public void BuildSingletonCluster(PatternMatrix patternMatrix)
        {
            int     clusterId = 0;
            Cluster cluster;

            foreach (Pattern item in patternMatrix)
            {
                cluster    = new Cluster();
                cluster.Id = clusterId;
                cluster.AddPattern(item);
                cluster.TotalQuantityOfPatterns = 1;
                _clusters.Add(cluster);
                clusterId++;
            }
        }