【问题标题】:How to assign clusters to new observations (test data) using scipy's hierchical clustering如何使用 scipy 层次聚类将聚类分配给新的观察(测试数据)
【发布时间】:2016-04-02 17:19:35
【问题描述】:
from scipy.cluster.hierarchy import dendrogram, linkage,fcluster
import numpy as np
import matplotlib.pyplot as plt

# data
np.random.seed(4711)  # for repeatability of this tutorial
a = np.random.multivariate_normal([10, 0], [[3, 1], [1, 4]], size=[100,])
b = np.random.multivariate_normal([0, 20], [[3, 1], [1, 4]], size=[50,])
X = np.concatenate((a, b),)

plt.scatter(X[:,0], X[:,1])

# fit clusters
Z = linkage(X, method='ward', metric='euclidean', preserve_input=True)

# plot dendrogram

max_d = 50
clusters = fcluster(Z, max_d, criterion='distance')

# now if I have new data
a = np.random.multivariate_normal([10, 0], [[3, 1], [1, 4]], size=[10,])
b = np.random.multivariate_normal([0, 20], [[3, 1], [1, 4]], size=[5,])
X_test = np.concatenate((a, b),)
print(X_test.shape)  # 150 samples with 2 dimensions
plt.scatter(X_test[:,0], X_test[:,1])
plt.show()

如何计算新数据的距离并使用来自训练数据的集群分配集群?

代码参考:joernhees.de

【问题讨论】:

    标签: python scipy cluster-analysis hierarchical-clustering data-science


    【解决方案1】:

    你没有。

    集群没有训练和测试阶段。这是一种探索性的方法。您探索数据,也可以通过重新运行算法探索新数据。但由于该算法的本质,您无法将新数据有意义地“分配”给旧结构,因为这些数据可能会完全改变已发现的结构。

    如果要分类,请使用分类器。

    聚类算法不是分类器的替代品。如果要对新实例进行分类,请使用分类器,并使用例如这个工作流程:

    1. 通过聚类探索数据(多次)
    2. 使用您的领域专家认为有意义的聚类标记训练数据(验证聚类!)
    3. 训练分类器
    4. 使用分类器以相同方式标记新实例

    当然,也有一些例外。在 k-means 和 Ward 中(但不是例如在单链接中),最近质心分类器 可以在某种程度上将发现的模型直接应用于新数据。尽管如此,这意味着将聚类“转换”为静态分类器,结果可能不再是完整数据集上的局部最优(另请参阅:概念漂移)

    【讨论】:

    • 如果我想对每个集群应用不同的模型集,使用距离度量(比如欧几里得)将集群分配给新数据并使用拟合模型进行预测是否有意义?跨度>
    • 异常值呢?你上面的例子太简单了。
    • 这不是很好的防守。您应该提供一些证据表明分配新数据会使原始模型无效。分类中没有任何东西可以增加更强的保证。新数据也可以改变任何监督模型的假设分布。你不应该说“你不”……这太简单了。有一些库可以让您预测新数据的集群分配,它们的存在是有原因的。
    • 进行聚类的全部目的是找到可以被识别用于监督学习的新特征。我认为第一段应该更正
    • 请不要自以为知道我们使用集群的目的。也许我们正在尝试做一些你还没有考虑过的创意。与此同时,这个问题没有得到回答。
    猜你喜欢
    • 2021-02-11
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 2019-04-27
    • 2021-01-15
    • 2021-07-02
    • 2017-11-23
    • 1970-01-01
    相关资源
    最近更新 更多