code: function step(centers, data, clusterID, K, options, iterations) {
    clusterID = updateClusterID(
      data,
      centers,
      clusterID,
      options.distanceFunction
    );
    var newCenters = updateCenters(centers, data, clusterID, K);
    var converged = hasConverged(
      newCenters,
      centers,
      options.distanceFunction,
      options.tolerance
    );
    return new KMeansResult(
      clusterID,
      newCenters,
      converged,
      iterations,
      options.distanceFunction
    );
  }
docs: Each step operation for kmeans
  @ignore
  @param {Array<Array<number>>} centers - K centers in format [x,y,z,...]
  @param {Array<Array<number>>} data - Points [x,y,z,...] to cluster
  @param {Array<number>} clusterID - Cluster identifier for each data dot
  @param {number} K - Number of clusters
  @param {object} [options] - Option object
  @param {number} iterations - Current number of iterations
  @return {KMeansResult}