KMeans
- class hana_ml.algorithms.pal.clustering.KMeans(n_clusters=None, n_clusters_min=None, n_clusters_max=None, init=None, max_iter=None, thread_ratio=None, distance_level=None, minkowski_power=None, category_weights=None, normalization=None, categorical_variable=None, tol=None, memory_mode=None, accelerated=False, use_fast_library=None, use_float=None)
K-means is one of the simplest and most commonly used unsupervised machine learning algorithms for partitioning a dataset into K distinct, non-overlapping clusters based on the distances between the center of the cluster (centroid) and the data points.
- Parameters:
- n_clustersint, optional
Specifies the number of clusters (k) required. The acceptable range is between 2 to the number of training records.
If this parameter is not specified, you must specify the range of k using
n_clusters_min'' and ``n_clusters_max
parameters instead. Then the algorithm will iterate through the range and return the k with the highest slight silhouette.- n_clusters_minint, optional
Provides the lower boundary of the range that k falls in.
You must specify either an exact value (
n_clusters
) or a range (n_clusters_min'' and ``n_clusters_max
) for k. If both are specified, the exact value will be used.No default value.
- n_clusters_maxint, optional
Provides the upper boundary of the range that k falls in.
You must specify either an exact value (
n_clusters
) or a range (n_clusters_min'' and ``n_clusters_max
) for k. If both are specified, the exact value will be used.No default value.
- init{'first_k', 'replace', 'no_replace', 'patent'}, optional
Governs the selection of initial cluster centers:
'first_k': First k observations.
'replace': Random with replacement.
'no_replace': Random without replacement.
'patent': Patent of selecting the init center (US 6,882,998 B1).
Defaults to 'patent'.
- max_iterint, optional
Specifies the maximal number of iterations to be performed.
Defaults to 100.
- thread_ratiofloat, optional
Adjusts the percentage of available threads to use, from 0 to 1. A value of 0 indicates the use of a single thread, while 1 implies the use of all possible current threads. Values outside the range will be ignored and this function heuristically determines the number of threads to use.
Defaults to 0.
- distance_level{'manhattan', 'euclidean', 'minkowski', 'chebyshev', 'cosine'}, optional
Ways to compute the distance between the item and the cluster center.
'cosine' is only applicable when
accelerated
is set to False.Defaults to 'euclidean'.
- minkowski_powerfloat, optional
When Minkowski distance is used, this parameter controls the value of power. Only valid when
distance_level
is 'minkowski'.Defaults to 3.0.
- category_weightsfloat, optional
Represents the weight of category attributes.
Defaults to 0.707.
- normalization{'no', 'l1_norm', 'min_max'}, optional
Normalization type.
'no': No normalization will be applied.
'l1_norm': Yes, for each point X (x1, x2, ..., xn), the normalized value will be X'(x1 /S,x2 /S,...,xn /S), where S = |x1|+|x2|+...|xn|.
'min_max': Yes, for each column C, get the min and max value of C, and then C[i] = (C[i]-min)/(max-min).
Defaults to 'no'.
- categorical_variablestr or a list of str, optional
Specifies which INTEGER columns should be treated as categorical, with all other INTEGER columns treated as continuous.
No default value.
- tolfloat, optional
Threshold (actual value) for exiting the iterations.
Only valid when
accelerated
is False.Defaults to 1.0e-6.
- memory_mode{'auto', 'optimize-speed', 'optimize-space'}, optional
Indicates the memory mode that the algorithm uses.
'auto': Chosen by algorithm.
'optimize-speed': Prioritizes speed.
'optimize-space': Prioritizes memory.
Only applicable when
accelerated
is set to True.Defaults to 'auto'.
- acceleratedbool, optional
Indicates whether to use technology like cache to accelerate the calculation process:
If True, the calculation process will be accelerated.
If False, the calculation process will not be accelerated.
Defaults to False.
- use_fast_librarybool, optional
Use vectorized accelerated operation when it is set to True.
Defaults to False.
- use_floatbool, optional
Floating point type:
True: float
False: double
Only valid when
use_fast_library
is set to True.Defaults to True.
Examples
Input DataFrame df:
>>> df.collect() ID V000 V001 V002 0 0 0.5 A 0.5 1 1 1.5 A 0.5 ... 19 19 15.7 A 1.6
Create a KMeans instance:
>>> km = clustering.KMeans(n_clusters=4, init='first_k', ... max_iter=100, tol=1.0E-6, thread_ratio=0.2, ... distance_level='Euclidean', category_weights=0.5)
Perform fit_predict():
>>> labels = km.fit_predict(data=df, 'ID') >>> labels.collect() ID CLUSTER_ID DISTANCE SLIGHT_SILHOUETTE 0 0 0 0.891088 0.944370 1 1 0 0.863917 0.942478 ... 19 19 1 1.102342 0.925679
Input DataFrame df:
>>> df.collect() ID V000 V001 V002 0 0 0.5 A 0 1 1 1.5 A 0 ... 19 19 15.7 A 1
Create Accelerated Kmeans instance:
>>> akm = clustering.KMeans(init='first_k', ... thread_ratio=0.5, n_clusters=4, ... distance_level='euclidean', ... max_iter=100, category_weights=0.5, ... categorical_variable=['V002'], ... accelerated=True)
Perform fit_predict():
>>> labels = akm.fit_predict(data=df, key='ID') >>> labels.collect() ID CLUSTER_ID DISTANCE SLIGHT_SILHOUETTE 0 0 0 1.198938 0.006767 1 1 0 1.123938 0.068899 ... 19 19 1 0.915565 0.937717
- Attributes:
- labels_DataFrame
Label assigned to each sample.
- cluster_centers_DataFrame
Coordinates of cluster centers.
- model_DataFrame
Model content.
- statistics_DataFrame
Statistics.
Methods
create_model_state
([model, function, ...])Create PAL model state.
delete_model_state
([state])Delete PAL model state.
fit
(data[, key, features, categorical_variable])Fit the model to the training dataset.
fit_predict
(data[, key, features, ...])Fit with the dataset and return the labels.
predict
(data[, key, features])Assign clusters to data based on a fitted model.
set_model_state
(state)Set the model state by state information.
- fit(data, key=None, features=None, categorical_variable=None)
Fit the model to the training dataset.
- Parameters:
- dataDataFrame
DataFrame containing the data.
- keystr, optional
Name of ID column. Defaults to the index column of data (i.e. data.index) if it is set.
If the index column of data is not provided, please enter the value of key.
- featuresa list of str, optional
Names of feature columns.
If
features
is not provided, it defaults to all non-key columns.- categorical_variablestr or a list of str, optional
Specifies which INTEGER columns should be treated as categorical, with all other INTEGER columns treated as continuous.
No default value.
- Returns:
- A fitted object of class "KMeans".
- fit_predict(data, key=None, features=None, categorical_variable=None)
Fit with the dataset and return the labels.
- Parameters:
- dataDataFrame
DataFrame containing the data.
- keystr, optional
Name of ID column.
Defaults to the index column of data (i.e. data.index) if it is set. If the index column of data is not provided, please enter the value of key.
- featuresa list of str, optional
Names of feature columns.
If
features
is not provided, it defaults to all non-key columns.- categorical_variablestr or a list of str, optional
Specifies which INTEGER columns should be treated as categorical, with all other INTEGER columns treated as continuous.
No default value.
- Returns:
- DataFrame
Label assigned to each sample.
- predict(data, key=None, features=None)
Assign clusters to data based on a fitted model.
The output structure of this method does not match that of fit_predict().
- Parameters:
- dataDataFrame
Data points to match against computed clusters.
This dataframe's column structure should match that of the data used for fit().
- keystr, optional
Name of ID column.
Defaults to the index column of data (i.e. data.index) if it is set. If the index column of data is not provided, please enter the value of key.
- featuresa list of str, optional.
Names of feature columns.
If
features
is not provided, it defaults to all non-key columns.
- Returns:
- DataFrame
Cluster assignment results, with 3 columns:
Data point ID, with name and type taken from the input ID column.
CLUSTER_ID, INTEGER type, representing the cluster the data point is assigned to.
DISTANCE, DOUBLE type, representing the distance between the data point and the cluster center.
- create_model_state(model=None, function=None, pal_funcname='PAL_CLUSTER_ASSIGNMENT', state_description=None, force=False)
Create PAL model state.
- Parameters:
- modelDataFrame, optional
Specify the model for AFL state.
Defaults to self.model_.
- functionstr, optional
Specify the function in the unified API.
A placeholder parameter, not effective for cluster assignment.
- pal_funcnameint or str, optional
PAL function name. Must be a valid PAL procedure that supports model state.
Defaults to 'PAL_CLUSTER_ASSIGNMENT'.
- state_descriptionstr, optional
Description of the state as model container.
Defaults to None.
- forcebool, optional
If True it will delete the existing state.
Defaults to False.
- delete_model_state(state=None)
Delete PAL model state.
- Parameters:
- stateDataFrame, optional
Specified the state.
Defaults to self.state.
- set_model_state(state)
Set the model state by state information.
- Parameters:
- state: DataFrame or dict
If state is DataFrame, it has the following structure:
NAME: VARCHAR(100), it mush have STATE_ID, HINT, HOST and PORT.
VALUE: VARCHAR(1000), the values according to NAME.
If state is dict, the key must have STATE_ID, HINT, HOST and PORT.
Inherited Methods from PALBase
Besides those methods mentioned above, the KMeans class also inherits methods from PALBase class, please refer to PAL Base for more details.