如何通过改变参数 xi 在 python 中使用 OPTICS 获得不同的集群?

How to get different clusters using OPTICS in python by varying the parameter xi?

我正在尝试使用 python 的 sklearn

使 OPTICS 聚类模型适合我的数据
from sklearn.cluster import OPTICS, cluster_optics_dbscan
from sklearn.preprocessing import StandardScaler

x = StandardScaler().fit_transform(data.loc[:, features])

op = OPTICS(max_eps=20, min_samples=10, xi=0.1)
op = op.fit(x)

从这个拟合模型中,我得到了点的可达距离 (op.reachability_) 和排序 (op.ordering_) 以及聚类标签 (op.labels_)

现在,我想通过更改参数 xi(在本例中为 0.01)来检查集群如何变化。我可以不用一次又一次地用不同的 xi 来拟合模型(这需要很多时间)吗?

或者,换句话说,是否有一个 scikit-learn 函数获取可达距离 (op.reachability_)、点的顺序 (op.ordering_) 和 xi 作为输入和输出集群标签?

我找到了一个函数 cluster_optics_dbscan,其中“performs DBSCAN extraction for an arbitrary epsilon given reachability-distances, core-distances and ordering and epsilon”(不是我想要的

先验,您需要调用 fit 方法,它正在执行实际的集群计算,如 function description.

中所述

但是,如果你看opticsclass,cluster_optics_xi 函数“根据Xi-steep方法自动提取簇”,同时调用 _xi_cluster_extract_xi_labels 函数,它们都将 xi 参数作为输入。因此,通过使用它们并进行一些重构,您也许能够实现您想要的。