//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++; } }
//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++; } }