如何通过改变参数 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
参数作为输入。因此,通过使用它们并进行一些重构,您也许能够实现您想要的。
我正在尝试使用 python 的 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)来检查集群如何变化。我可以不用一次又一次地用不同的 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
参数作为输入。因此,通过使用它们并进行一些重构,您也许能够实现您想要的。