在不同轴上具有不同 epsilon 的 OPTICS 算法

OPTICS algorithm with different epsilons on different axes

我正在尝试将提供的充电功率集中到不同的车辆。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
from sklearn.cluster import KMeans, AgglomerativeClustering, DBSCAN, OPTICS, cluster_optics_dbscan

df_temp_12 = list(map(lambda x, y: [x, y], VehicleList, Power))
Eps = 1.3
dbscan_12_object = OPTICS(eps=Eps, cluster_method="dbscan")
dbscan_12 = dbscan_12_object.fit_predict(df_temp_12)

我现在的输出是这样的:

我试图主要沿水平轴进行聚类(如绿色聚类所示)。如果你仔细观察,所有其他集群都没有以相同的方式集群(即沿着水平方向),因此我试图弄清楚我是否可以分别改变每个轴上的 EPS 值,如果可以,如何?

编辑: 在@PlzBePython 的建议之后,输出看起来像这样。正是我所需要的 enter image description here

如果您已经知道要沿特定轴聚类,为什么不单独聚类该特征?

例如:

data = np.array(Power).reshape((-1, 1))
clusterer = sklearn.cluster.OPTICS(eps=1.3, cluster_method="dbscan")
clustered_data = clusterer.fit(data).labels_

否则,我会尝试创建不带参数的 OPTICS (default is to identify clusters across all scales)

clusterer = sklearn.cluster.OPTICS()

或使用Gaussian Mixture.