1.基本思想
谱聚类(Spectral Clustering)是一种基于图论的聚类算法,它的基本思想是将数据样本看作图中的节点,通过图的特征来进行聚类。
具体而言,谱聚类的基本思想可以概括为以下几个步骤:
- 构建相似度矩阵:将数据集中每个样本看作图中的一个节点,计算任意两个节点之间的相似度,并将相似度保存在一个矩阵中。
- 构建图:根据相似度矩阵,构建一个加权无向图或加权有向图,其中节点表示数据样本,边的权重表示节点之间的相似度。
- 对图进行谱分解:对图的拉普拉斯矩阵进行特征分解,得到其特征值和特征向量。
- 选择特征向量:选择特征值较小的前k个特征向量,将它们作为样本的新特征表示。
- 聚类:对新的特征表示进行聚类,可以使用传统的聚类算法如K-Means等。
谱聚类的优点在于它可以发现非凸、非线性的数据结构,而且对噪声和离群点有较好的鲁棒性。同时,谱聚类也可以用于降维和图像分割等领域。
2.数据集介绍
鸢尾花(Iris)数据集是一个经典的数据集,用于机器学习和统计学习中的分类和聚类问题。该数据集包含了三种不同类型的鸢尾花(山鸢尾、变色鸢尾和维吉尼亚鸢尾)的测量数据,每种花各有50个样本。每个样本包含四个特征,即萼片长度、萼片宽度、花瓣长度和花瓣宽度,以及它所属的鸢尾花类型。
该数据集最早由英国统计学家和生物学家Ronald Fisher在1936年的一篇论文中介绍,并一直被广泛用于分类和聚类问题的研究中。由于其简单性和广泛应用性,鸢尾花数据集已成为了机器学习和统计学习中的标准数据集之一。
本文采用的数据是.xlsx格式,前四列为样本的特征值,最后一列为样本的标签,标签值为1,2,3
3.文件结构
iris.xlsx % 鸢尾花数据集,具体格式参考第2部分
Main.m % 主函数
4.详细代码及注释
% 清空变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
% 读取Excel文件中的数据
data = xlsread('iris.xlsx');
% 计算相似度矩阵
D = pdist(data);
S = squareform(D);
sigma = median(S(:))/0.6745; % 自适应带宽,0.6745为常数
W = exp(-S.^2/(2*sigma^2)); % 高斯核函数
% 计算度矩阵
D = diag(sum(W));
% 计算拉普拉斯矩阵
L = D - W;
% 计算特征值和特征向量
[U, Lambda] = eig(L);
% 对特征向量进行归一化
for i=1:size(U, 2)
U(:, i) = U(:, i)/norm(U(:, i));
end
% 取前k个特征向量
k = 3;
V = U(:, 1:k);
% 对特征向量进行聚类
C = kmeans(V, k);
% 可视化聚类结果
gscatter(data(:, 1), data(:, 2), C);