python-3.x - 如何为可视化目的反向缩放 numpy 数组?
问题描述
因此,我正在进行聚类并进行缩放。我现在希望我的可视化(集群图)使用原始数据点,即在它们被缩放之前。我还没有遇到一个好的解决方案。我希望有人能帮帮忙。
#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 聚类时,我是否遗漏了什么?ie 如何确保我的集群性能良好?我没有基本事实,所以我只使用了 Shilouette 指标,但我对我的模型的性能真的没有信心。如果我不想在我的情况下进行预测而是仅描述当前状态,那么基本事实的目的是什么?
解决方案
只需绘制原始数据即可。
即 plot data
, not X
,如果那是你想要的。
集群性能本质上是主观的。如果您了解一些您以前不知道的数据,那就太好了。由于无法在方程式中捕获您“知道”或“有用”的内容,因此无法可靠地评估 8t。任何评估都只是一种启发式。轮廓不是一个好的选择,因为它会惩罚噪声和非凸簇。内部度量就像聚类算法一样。外部措施计算他们找到您已经知道的东西的程度 - 对实际数据都没有好处。外部措施在科学论文中很受欢迎,但可以证明该算法并非完全垃圾。你假装你不知道你知道什么,然后检查算法是否仍然可以找到那个模式。
那么你需要做什么?调查:它看起来有用吗,是否值得尝试使用它。然后继续:尝试使用集群来解决您的问题。如果它有助于解决您的问题,那就太好了。
推荐阅读
- android - Couchbase Mobile 2.0 在 MutableDocument 中设置数组
- ajax - 如何使用 Bootstrap 4 为表中的行创建模式
- javascript - 点击表单标签向上移动但当用户点击输入字段时标签不会恢复正常
- java - 当每个主机都监听同一个端口时,路由器如何知道向谁发送新消息?
- java - Why my GridView cuts off at The End?
- vba - 强制重新计算的按钮(Application.Volatile?)
- java - 从不受弹簧数据休息管理的控制器返回实体对象
- r - 将 R 与 MySQL 连接
- git - Git 使用什么数据库存储元数据以及如何访问它?
- ios - 如何在 ScrollView Swift 中为图像更改设置动画