1.基本思想
MDS(多维尺度变换)是一种经典的降维算法,其基本思想是通过保持数据点之间的距离关系,将高维数据映射到低维空间中。
具体来说,MDS算法的基本步骤如下:
- 计算数据点之间的距离矩阵。可以使用欧氏距离、曼哈顿距离、余弦距离等不同的距离度量方式。
- 将距离矩阵转换为内积矩阵。内积矩阵中的每个元素表示两个数据点之间的内积,可以通过距离矩阵使用半正定矩阵的方法进行计算。
- 对内积矩阵进行特征值分解。得到特征值和特征向量。
- 根据特征值和特征向量计算降维后的坐标。将特征向量按照特征值大小排序,选择前k个特征向量,将原始数据映射到这k个特征向量构成的空间中。
- 将降维后的数据点绘制出来。
需要注意的是,MDS算法的效果受到距离矩阵的影响,因此距离度量方式的选择对算法的性能具有重要影响。此外,由于MDS算法是一种基于距离的方法,因此只适用于那些距离信息比较完备的数据集。
2.数据集介绍
鸢尾花(Iris)数据集是一个经典的数据集,用于机器学习和统计学习中的分类和聚类问题。该数据集包含了三种不同类型的鸢尾花(山鸢尾、变色鸢尾和维吉尼亚鸢尾)的测量数据,每种花各有50个样本。每个样本包含四个特征,即萼片长度、萼片宽度、花瓣长度和花瓣宽度,以及它所属的鸢尾花类型。
该数据集最早由英国统计学家和生物学家Ronald Fisher在1936年的一篇论文中介绍,并一直被广泛用于分类和聚类问题的研究中。由于其简单性和广泛应用性,鸢尾花数据集已成为了机器学习和统计学习中的标准数据集之一。在实践中,该数据集也常被用于学习数据可视化和降维方法,例如PCA和KPCA等。
本文采用的数据是.xlsx格式,前四列为样本的特征值,最后一列为样本的标签,标签值为1,2,3
3.文件结构
iris.xlsx % 鸢尾花数据集,具体格式参考第2部分
Main.m % 主函数
4.详细代码及注释
% 清空变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
% 加载数据
data = readmatrix('iris.xlsx');
% 将数据按行归一化
data_norm = zscore(data(:,1:end-1));
% 计算距离矩阵
D = pdist(data_norm);
% 计算坐标
Y = cmdscale(D);
% 绘制降维结果
gscatter(Y(:,1), Y(:,2), data(:,end));
xlabel('Component 1');
ylabel('Component 2');
title('MDS of Iris Dataset');