Python 3.x 如何反转缩放的numpy阵列以实现可视化?

Python 3.x 如何反转缩放的numpy阵列以实现可视化?,python-3.x,numpy,dbscan,Python 3.x,Numpy,Dbscan,因此,我正在进行聚类并进行缩放。现在,我希望我的可视化(聚类图)使用原始数据点,即缩放之前的数据点。我还没有找到一个好的解决办法。我希望有人能帮忙 #convert df='data' to numpy array for clustering data=data.values X=data #Scale X = StandardScaler().fit_transform(X) # Compute DBSCAN db = DBSCAN(eps=0.25, min_samples=10).f

因此,我正在进行聚类并进行缩放。现在,我希望我的可视化(聚类图)使用原始数据点,即缩放之前的数据点。我还没有找到一个好的解决办法。我希望有人能帮忙

#convert df='data' to numpy array for clustering
data=data.values
X=data

#Scale
X = StandardScaler().fit_transform(X)

# Compute DBSCAN
db = DBSCAN(eps=0.25, min_samples=10).fit(X)
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_

# Number of clusters in labels, ignoring noise if present.
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
n_noise_ = list(labels).count(-1)

#Internal indeces measure for performance
print("Silhouette Coefficient: %0.3f" % metrics.silhouette_score(X, labels))


# Plot result
unique_labels = set(labels)
colors = [plt.cm.Spectral(each)
          for each in np.linspace(0, 1, len(unique_labels))]
for k, col in zip(unique_labels, colors):
    if k == -1:
        # Black used for noise.
        col = [0, 0, 0, 1]

    class_member_mask = (labels == k)

    xy = X[class_member_mask & core_samples_mask]
    plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
             markeredgecolor='k', markersize=14)

    xy = X[class_member_mask & ~core_samples_mask]
    plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
             markeredgecolor='k', markersize=6)

plt.title('Estimated number of clusters, excluding noise cluster: %d' % n_clusters_)
plt.xlabel('A', fontsize=18)
plt.ylabel('B', fontsize=16)
plt.ylim(ymax = 5, ymin = -0.5)
plt.xlim(xmax = 5, xmin = -0.5)
plt.show();
输出:显示聚类图,但轴上有缩放值。

问题
1.如何使用其原始值进行绘图?

2.我是否在做DBSCAN集群时遗漏了什么?i、 e.如何确保集群性能良好?我没有一个基本事实,所以我只使用了Shilouette度量,但我对我的模型的性能是否真的很好没有信心。如果我不是在试图预测我的情况,而是只描述当前的状态,那么“基本事实”的目的是什么呢?

那就绘制原始数据吧

也就是说,如果这是您想要的,则绘制
数据
,而不是
X

集群性能本质上是主观的。如果您了解了一些您以前不知道的有关数据的信息,这是很好的。由于无法在方程式中捕捉到您“知道”或“有用”的内容,因此无法可靠地评估8t。任何评估都只是一种启发。剪影不是一个好的选择,因为它会惩罚噪声和非凸簇。内部度量就像聚类算法一样。外部测量计算他们发现你已经知道的东西的程度——这两种方法都不适合实际数据。科学论文中普遍采用外部测量来证明算法不是完全垃圾。你假装不知道你知道什么,然后检查算法是否仍然可以找到该模式


那么你需要做什么呢?调查:它看起来有用吗,值得尝试使用吗。然后继续:尝试使用集群解决您的问题。如果这有助于解决您的问题,那就好了。

谢谢您的回复。那么,是否正确地解释了这是一种主观评估,因为不能使用任何基本事实(因此没有外部措施)?