ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何使用scipy的hierchical聚类将聚类分配给新的观察(测试数据)

2019-08-29 13:56:31  阅读:246  来源: 互联网

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


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])

enter image description here

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

# plot dendrogram

enter image description here

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()

enter image description here

如何计算新数据的距离并使用训练数据中的聚类分配聚类?

代码参考:joernhees.de

解决方法:

你没有.

群集没有培训和测试阶段.这是一种探索性的方法.您可以浏览数据,还可以通过重新运行算法来浏览新数据.但是根据这种算法的本质,你不能有意义地将新数据“分配”给旧结构,因为这些数据可以完全改变发现的结构.

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

聚类算法不能替代分类器.如果要对新实例进行分类,请使用分类器,并使用例如此工作流程:

>通过群集探索数据(多次)
>使用您的领域专家认为有意义的集群标记培训数据(验证克隆!)
>训练分类器
>使用分类器以相同的方式标记新实例

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

标签:python,scipy,data-science,cluster-analysis,hierarchical-clustering
来源: https://codeday.me/bug/20190829/1761181.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有