层次聚类 python代码
时间: 2024-06-11 09:02:13 浏览: 130
层次聚类是一种基于树形结构的聚类算法,它通过计算样本之间的相似度来构建一棵树形结构,树的叶子节点就是样本,而树的根节点则是所有样本的最近公共祖先。层次聚类分为两种:自上而下的聚合式层次聚类和自下而上的分裂式层次聚类。
下面是一个使用 Python 实现层次聚类的简单示例代码:
```python
import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
# 生成随机数据
X = np.random.rand(10, 2)
# 计算相似度矩阵
Z = linkage(X, 'ward')
# 绘制树状图
fig = plt.figure(figsize=(25, 10))
dn = dendrogram(Z)
plt.show()
```
在这个示例中,我们使用 numpy 库生成了一个包含 10 个样本,每个样本有两个特征的随机数据集。然后使用 scipy 库中的 linkage 函数计算相似度矩阵,并选择使用 Ward 方法进行层次聚类。最后使用 matplotlib 库绘制树状图。
相关问题
层次聚类python代码
下面是一个使用scikit-learn库进行层次聚类的Python代码示例:
```python
from sklearn.cluster import AgglomerativeClustering
import numpy as np
# 创建样本数据
X = np.array([[5, 3],
[10, 15],
[15, 12],
[24, 10],
[30, 30],
[85, 70],
[71, 80],
[60, 78],
[70, 55],
[80, 91],])
# 进行层次聚类
clustering = AgglomerativeClustering(n_clusters=2).fit(X)
# 打印每个样本所属的簇
print(clustering.labels_)
```
上面的代码创建了一个包含10个样本的数据集,并使用`AgglomerativeClustering`类进行层次聚类。聚类的数量被设置为2个,因此最终生成2个簇。聚类结果存储在`clustering.labels_`中,打印输出即可看到每个样本所属的簇。
对文本相似度进行无监督学习层次聚类python代码示例
无监督学习层次聚类(Hierarchical Clustering)是一种将文本相似度作为输入,并通过不断合并最相似的样本形成聚类的过程。这里提供了一个使用`sklearn`库在Python中进行无监督文本聚类的简单例子,我们将使用`TfidfVectorizer`进行词频转换,并利用`AgglomerativeClustering`进行层次聚类:
```python
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import AgglomerativeClustering
import numpy as np
# 假设你有一个包含文本的列表
texts = ['这是一段文本', '这是另一段文本', '这是第三段文本', ...]
# 将文本转换成TF-IDF特征矩阵
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(texts)
# 创建层次聚类模型,设定连接策略(如ward、average、complete等)
n_clusters = None # 如果不知道具体分几类,可以设置为None,系统会自动选取适当的簇数
linkage_method = 'ward' # 可选链接法,这里用ward方法(倾向于生成较小的类)
agglo_clustering = AgglomerativeClustering(n_clusters=n_clusters, affinity='cosine', linkage=linkage_method)
# 训练模型
labels = agglo_clustering.fit_predict(tfidf_matrix)
# 打印聚类结果
for i in range(len(texts)):
print(f"文本{i}属于类别{labels[i]}")
# 现在你可以分析聚类结果,比如查看每个类别的文档主题
阅读全文