1

我正在尝试使用 python 将 OPTICS 聚类模型拟合到我的数据中sklearn

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)来检查集群如何变化。我可以在不使用不同的 's 一次又一次地拟合模型的情况下做到这一点xi(这需要很多时间)吗?

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

我找到了一个函数cluster_optics_dbscan,它“对给定可达距离、核心距离和排序和 epsilon 的任意 epsilon 执行 DBSCAN 提取”(不是我想要的

4

1 回答 1

1

先验地,您需要调用 fit 方法,该方法正在执行实际的集群计算,如函数描述中所述。

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

于 2021-04-26T08:58:29.987 回答