22Modern clustering API for allocator package.
33"""
44
5- from __future__ import annotations
6-
75from pathlib import Path
86
97import numpy as np
@@ -66,15 +64,16 @@ def kmeans(
6664 Args:
6765 data: Input data as DataFrame or numpy array
6866 n_clusters: Number of clusters
69- distance: Distance metric ('euclidean', 'haversine', 'osrm', 'google' )
67+ distance: Distance metric (stored in metadata only; clustering uses Euclidean )
7068 max_iter: Maximum iterations
7169 random_state: Random seed for reproducibility
72- **kwargs: Additional distance-specific arguments
70+ **kwargs: Additional arguments (unused, kept for API compatibility)
7371
7472 Returns:
7573 ClusterResult with clustering information
7674 """
77- # Ensure we have a DataFrame for output
75+ del kwargs
76+
7877 if isinstance (data , np .ndarray ):
7978 df = DataHandler ._from_numpy (data )
8079 elif isinstance (data , list ):
@@ -84,36 +83,21 @@ def kmeans(
8483 else :
8584 df = data .copy ()
8685
87- # Run clustering algorithm
8886 result = _kmeans_cluster (
8987 df ,
9088 n_clusters = n_clusters ,
91- distance_method = distance ,
9289 max_iter = max_iter ,
9390 random_state = random_state ,
94- ** kwargs ,
9591 )
9692
97- # Add cluster assignments to DataFrame
9893 df_result = df .copy ()
9994 df_result ["cluster" ] = result ["labels" ]
10095
101- # Calculate inertia (sum of squared distances to centroids)
102- inertia = None
103- if distance == "euclidean" :
104- from ..distances import euclidean_distance_matrix
105-
106- coords = df [["longitude" , "latitude" ]].values
107- distances = euclidean_distance_matrix (coords , result ["centroids" ])
108- inertia = np .sum (
109- [distances [i , result ["labels" ][i ]] ** 2 for i in range (len (result ["labels" ]))]
110- )
111-
11296 return ClusterResult (
11397 labels = result ["labels" ],
11498 centroids = result ["centroids" ],
11599 n_iter = result ["iterations" ],
116- inertia = inertia ,
100+ inertia = result [ " inertia" ] ,
117101 data = df_result ,
118102 converged = result ["converged" ],
119103 metadata = {
0 commit comments