// http://www.cs.princeton.edu/courses/archive/fall08/cos436/Duda/C/sk_means.htm void Clusterer::ProcessSample(const Sample &sample) { // Figure out closest cluster oid_t closest_cluster = GetClosestCluster(sample); Sample distance = sample.GetDifference(means_[closest_cluster]); Sample mean_drift = distance * new_sample_weight_; // Update the cluster's mean means_[closest_cluster] = means_[closest_cluster] + mean_drift; }