K means parameters and convergence
Inspect seeded centers, row assignments, inertia and convergence using complete deterministic input.
// Seeded Lloyd clustering with every fitting control explicit.
import aner.ml
import aner.tensor
import aner.metrics
let features: Tensor = [[0.0], [2.0], [10.0], [12.0]]
let reference_groups: Tensor = [[10.0], [10.0], [20.0], [20.0]]
let model = ml.fit_kmeans(features: features, clusters: 2,
max_iterations: 100, tolerance: 0.0, seed: 42)
let repeated = ml.fit_kmeans(features: features, clusters: 2,
max_iterations: 100, tolerance: 0.0, seed: 42)
let assigned = model.labels()
let centers = model.centers()
let predicted = model.predict(input: [[1.0], [11.0]])
print(tensor.rows(centers))
print(tensor.cols(centers))
print(model.converged())
print(model.iterations() >= 1 && model.iterations() <= 100)
print(model.inertia())
print(metrics.adjusted_rand_index(predicted: assigned, actual: reference_groups))
print(tensor.value(predicted, 0, 0) != tensor.value(predicted, 1, 0))
print(tensor.value(centers, 0, 0) == tensor.value(repeated.centers(), 0, 0))
print(tensor.value(centers, 1, 0) == tensor.value(repeated.centers(), 1, 0))
// A requested cluster count need not become an occupied-cluster count.
let duplicates = ml.fit_kmeans(features: [[5.0], [5.0]], clusters: 2,
max_iterations: 3, tolerance: 0.0, seed: 42)
print(tensor.value(duplicates.labels(), 0, 0))
print(tensor.value(duplicates.labels(), 1, 0))
print(duplicates.inertia())
Make it your experiment.
Use Aner 0.0.5 or newer. Save this program as examples/kmeans_reference.aner inside a folder for your experiment. Open a terminal in that folder, then check and run the program.
aner check examples/kmeans_reference.aner
aner run examples/kmeans_reference.anerThe aner command must be on your PATH. Follow the installation guide if your terminal cannot find it.
Requires Aner 0.0.5 or newer. Uses complete synthetic tensors and the native classical ML runtime. No dataset download, credentials or external service is required. The guide documents exact expected results and all input constraints.
aner check examples/kmeans_reference.aner
aner run examples/kmeans_reference.anerBundled datasets retain their own source attribution and license notices. Example outcomes are not comparative benchmarks or evidence of clinical validity.
Dataset sources & attribution