yobx.sklearn.cluster.affinity_propagation#
- yobx.sklearn.cluster.affinity_propagation.sklearn_affinity_propagation(g: GraphBuilderExtendedProtocol, sts: Dict, outputs: List[str], estimator: AffinityPropagation, X: str, name: str = 'affinity_propagation') str | Tuple[str, str][source]#
Converts a
sklearn.cluster.AffinityPropagationinto ONNX.The converter produces two outputs: the predicted cluster labels (equivalent to
predict()) and the Euclidean distances from each sample to every cluster centre.The
predictmethod ofAffinityPropagationassigns each sample to the nearest cluster centre using Euclidean distance, which is reproduced here via the identity:||x - c||² = ||x||² - 2·x·cᵀ + ||c||²
Full graph structure:
X (N,F) │ ├──Mul──ReduceSum(axis=1, keepdims=1)──────────────────────────────► x_sq (N,1) │ │ └──MatMul(centersᵀ)────────────────────────────────────────────────► cross (N,K) │ c_sq (1,K) ─────────────────────── Add(x_sq) ─── Sub(Mul(2,cross)) ──► sq_dists (N,K) │ Sqrt ──────────────────────► distances (N,K) │ ArgMin(axis=1) ─────────────────► labels (N,)- Parameters:
g – the graph builder to add nodes to
sts – shapes defined by scikit-learn
estimator – a fitted
AffinityPropagationoutputs – desired output names;
outputs[0]receives the cluster labels andoutputs[1](if present) receives the distances matrixX – input tensor name
name – prefix names for the added nodes
- Returns:
tuple
(labels, distances)when two outputs are requested, otherwise justlabels