mojolearn.BisectingKMeans#
- class mojolearn.BisectingKMeans(n_clusters=8, *, init='random', n_init=1, random_state=None, max_iter=300, verbose=0, tol=0.0001, copy_x=True, algorithm='lloyd', bisecting_strategy='biggest_inertia')[source]#
Bases:
_CentersMixin,_XClusterBisecting k-means clustering.
Starting from one cluster, the leaf with the highest score is split in two by 2-means,
n_clusters - 1times. The 2-means step is this library’sKMeans, sotoluses its centroid-shift rule and the ‘random’ and ‘k-means++’ starts are its own; results agree with scikit-learn’s within a tolerance. Input is converted to float32.- Parameters:
n_clusters (int, default 8) – Number of clusters. Must be between 1 and the number of samples.
init ({‘random’, ‘k-means++’}, default ‘random’) – Start of each 2-means split. Any other value raises NotImplementedError.
n_init (int, default 1) – Number of 2-means restarts per split; the best is kept. Must be at least 1.
random_state (int or None, default None) – Non-negative seed. None means 0, so repeated fits give the same result. A NumPy
RandomStateis not accepted.max_iter (int, default 300) – Maximum iterations of each 2-means.
verbose (int, default 0) – Accepted for scikit-learn compatibility; nothing is printed.
tol (float, default 1e-4) – Convergence tolerance of each 2-means, on the centroid shift.
copy_x (bool, default True) – Accepted for scikit-learn compatibility;
Xis never modified.algorithm ({‘lloyd’, ‘elkan’}, default ‘lloyd’) – Accepted for scikit-learn compatibility; both run the same Lloyd iterations.
bisecting_strategy ({‘biggest_inertia’, ‘largest_cluster’}, default ‘biggest_inertia’) – Which leaf to split next: the one with the largest inertia, or the one with the most rows.
numeric_mode (str or None, default None) – Numeric mode for this estimator. None uses the process default (see
mojolearn.set_numeric_mode()).
- Variables:
cluster_centers_ (Array of shape (n_clusters, n_features), float32) – Centers of the leaf clusters.
labels_ (Array of shape (n_samples,), int32) – Cluster of each training row.
inertia_ (float) – Sum of squared distances of the training rows to their cluster center.
n_features_in_ (int) – Number of features seen in
fit.
Examples
>>> import numpy as np, mojolearn >>> X = np.random.default_rng(0).random((1000, 8), dtype=np.float32) >>> model = mojolearn.BisectingKMeans(n_clusters=4, random_state=0).fit(X) >>> labels = model.predict(X)
- __init__(n_clusters=8, *, init='random', n_init=1, random_state=None, max_iter=300, verbose=0, tol=0.0001, copy_x=True, algorithm='lloyd', bisecting_strategy='biggest_inertia')[source]#
Methods
fit(X[, y, sample_weight])Build the bisection tree on
X.fit_predict(X[, y, sample_weight])Fit the model on
Xand return the training labels.fit_transform(X[, y, sample_weight])Fit the model on
Xand return the distances to the centers.get_params([deep])numeric_mode_used()The numeric mode this estimator runs in.
predict(X)Assign each row of
Xto a leaf cluster.score(X[, y, sample_weight])Opposite of the inertia of
Xunder the fitted centers.set_params(**params)Set constructor parameters.
transform(X)Distance from each row of
Xto every cluster center.vendor_used()The GPU backend this estimator runs on.
- fit(X, y=None, sample_weight=None)[source]#
Build the bisection tree on
X.- Parameters:
X (array-like of shape (n_samples, n_features)) – Training rows, converted to float32. NaN or infinity raises ValueError.
y (ignored) – Present for scikit-learn compatibility.
sample_weight (array-like of shape (n_samples,) or None, default None) – Row weights.
- Returns:
self (BisectingKMeans) – The fitted estimator.
- Raises:
NotImplementedError – If
initis not ‘random’ or ‘k-means++’.ValueError – If
bisecting_strategyoralgorithmis unknown,n_clustersis outside [1, n_samples],n_initis below 1, orXcontains NaN or infinity.
- predict(X)[source]#
Assign each row of
Xto a leaf cluster.As in scikit-learn, each row descends the bisection tree, going to the nearer child center at each split (the left child on a tie). This can differ from the nearest leaf center.
- Parameters:
X (array-like of shape (n_samples, n_features)) – Rows to label, converted to float32.
- Returns:
labels (Array of shape (n_samples,), int32) – Leaf cluster of each row.
- Raises:
RuntimeError – If the model is not fitted.