Version:

/aggregate/kmeans

URL: http://GPUDB_IP_ADDRESS:GPUDB_PORT/aggregate/kmeans

This endpoint runs the k-means algorithm - a heuristic algorithm that attempts to do k-means clustering. An ideal k-means clustering algorithm selects k points such that the sum of the mean squared distances of each member of the set to the nearest of the k points is minimized. The k-means algorithm however does not necessarily produce such an ideal cluster. It begins with a randomly selected set of k points and then refines the location of the points iteratively and settles to a local minimum. Various parameters and options are provided to control the heuristic search.

NOTE: The Kinetica instance being accessed must be running a CUDA (GPU-based) build to service this request.

Input Parameter Description

Name Type Description
table_name string Name of the table on which the operation will be performed. Must be an existing table or collection.
column_names array of strings List of column names on which the operation would be performed. If n columns are provided then each of the k result points will have n dimensions corresponding to the n columns.
k int The number of mean points to be determined by the algorithm.
tolerance double Stop iterating when the distances between successive points is less than the given tolerance.
options map of string to strings

Optional parameters. The default value is an empty map ( {} ).

Supported Parameters (keys) Parameter Description
whiten When set to 1 each of the columns is first normalized by its stdv - default is not to whiten.
max_iters Number of times to try to hit the tolerance limit before giving up - default is 10.
num_tries Number of times to run the k-means algorithm with a different randomly selected starting points - helps avoid local minimum. Default is 1.

Output Parameter Description

The GPUdb server embeds the endpoint response inside a standard response structure which contains status information and the actual response to the query. Here is a description of the various fields of the wrapper:

Name Type Description
status String 'OK' or 'ERROR'
message String Empty if success or an error message
data_type String 'aggregate_k_means_request' or 'none' in case of an error
data String Empty string
data_str JSON or String

This embedded JSON represents the result of the /aggregate/kmeans endpoint:

Name Type Description
means array of arrays of doubles The k-mean values found.
counts array of longs The number of elements in the cluster closest the corresponding k-means values.
rms_dists array of doubles The root mean squared distance of the elements in the cluster for each of the k-means values.
count long The total count of all the clusters - will be the size of the input table.
rms_dist double The sum of all the rms_dists - the value the k-means algorithm is attempting to minimize.
tolerance double The distance between the last two iterations of the algorithm before it quit.
num_iters int The number of iterations the algorithm executed before it quit.

Empty string in case of an error.