请用python自创一个数据集写一个谱聚类算法python代码
时间: 2024-10-18 07:05:23 浏览: 24
谱聚类是一种非监督学习技术,它将数据点视为图中节点,并利用节点之间的相似度构建一个图的拉普拉斯矩阵来进行聚类。下面是一个简单的Python代码示例,我们将使用Scipy库中的`spectral_clustering`函数实现谱聚类:
```python
import numpy as np
from sklearn.datasets import make_blobs
from scipy.sparse.csgraph import laplacian
from sklearn.cluster import SpectralClustering
# 创建一个样本数据集
n_samples, n_features = 50, 10
random_state = 42
X, y_true = make_blobs(n_samples=n_samples, centers=3, random_state=random_state)
# 将数据转换为拉普拉斯矩阵
affinity_matrix = np.dot(X, X.T) # 邻接矩阵,可以换成其他相似度计算方式(如cosine similarity)
laplacian_matrix = laplacian(affinity_matrix, normed=True) # 归一化拉普拉斯矩阵
# 定义并运行谱聚类
spectral_clustering_model = SpectralClustering(n_clusters=3, affinity='precomputed') # 3个聚类中心
labels = spectral_clustering_model.fit_predict(laplacian_matrix)
# 打印预测的标签以及与真实标签的对比
print("Predicted labels:", labels)
print("Accuracy:", np.mean(labels == y_true))
阅读全文