MATLAB数学建模——MDS多维缩放降维

% 清空工作区,关闭所有图窗,清除命令窗口
clear; close all; clc;

% 生成一组随机数据,假设有100个点,每个点在5维空间中
data = rand(100, 5);

% 计算数据点之间的欧氏距离矩阵
% 该距离矩阵用于MDS进行降维
distance_matrix = pdist2(data, data, 'euclidean');

% 使用经典MDS方法,将高维数据降维到2维
% cmdscale函数用于执行经典MDS,并返回降维后的坐标
[Y, eigenvals] = cmdscale(distance_matrix, 2);

% 绘制降维后的数据点散点图
figure;
scatter(Y(:,1), Y(:,2), 'filled');
title('MDS降维到2维空间的结果');
xlabel('第一维');
ylabel('第二维');
grid on;

% 可视化原始数据点之间的距离与降维后数据点之间的距离的比较
% 绘制原始距离矩阵和降维后距离矩阵的关系图
figure;
D_original = squareform(pdist(data));  % 原始高维数据的距离矩阵
D_reduced = pdist2(Y, Y, 'euclidean'); % 降维后的数据点距离矩阵

% 将距离矩阵转为向量形式
D_original_vec = D_original(tril(true(size(D_original)), -1));
D_reduced_vec = D_reduced(tril(true(size(D_reduced)), -1));

% 绘制原始距离与降维后距离的关系散点图
scatter(D_original_vec, D_reduced_vec, 'filled');
title('原始距离与降维后距离的关系');
xlabel('原始距离');
ylabel('降维后距离');
grid on;

% 在图上添加一条y=x的参考线
hold on;
plot([0 max(D_original_vec)], [0 max(D_original_vec)], 'r--');
legend('距离点', 'y = x参考线');
hold off;

% 降维结果分析
figure;
plot(cumsum(eigenvals) / sum(eigenvals), 'o-');
title('特征值累积贡献率');
xlabel('维数');
ylabel('累积贡献率');
grid on;

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值