using System; using System.Collections.Generic; namespace ZeroLevel.ML { public class FeatureClusterBulder { public FeatureClusterCollection Build(IEnumerable items, Func vectorExtractor, Func similarityFunction, float threshold) { var collection = new FeatureClusterCollection(); foreach (var item in items) { bool isAdded = false; foreach (var cluster in collection.Clusters) { if (cluster.Value.IsNeighbor(item, similarityFunction, threshold)) { cluster.Value.Append(item); isAdded = true; break; } } if (false == isAdded) { var cluster = new FeatureCluster(vectorExtractor); cluster.Append(item); collection.Add(cluster); } } return collection; } } }