您的位置:首页 > 编程语言 > MATLAB

使用matlab进行降维

2018-01-08 10:37 501 查看
clc;
for i=1:168
X(i,1:20)=totalPDSdat(i,5:24);

labels(i,1)=0;
end

for i=169:386
X(i,1:20)=totalNPdata(i-168,5:24);
labels(i,1)=1;
end

item=10;  %迭代次数
sigma=1; %高斯函数方差

filename = ['-sigma-' num2str(sigma) '--' num2str(item) '.gif']; %必须预先建立gif文件

% 估计本质维数,即最终降到的维数
no_dims = round(intrinsic_dim(X, 'MLE'));
disp(['MLE estimate of intrinsic dimensionality: ' num2str(no_dims)]);

for i = 1:item
[mappedX, mapping] = compute_mapping(X, 'Laplacian', no_dims,12,i);
tname  = ['-sigma-' num2str(sigma) 'Result of Laplacian Eigenmaps'];
figure(i),
scatter3(mappedX(:,1), mappedX(:,2), mappedX(:,3),5, labels(mapping.conn_comp),'filled');
if isequal(labels(mapping.conn_comp),labels)
sprintf('%s','sucess')
else sprintf('%s','error')
end

title(tname);
sigma=sigma+1;

% 自动保存为gif图像
frame = getframe(i);
im = frame2im(frame);
[I,map] = rgb2ind(im,256);
if i==1
imwrite(I,map,filename,'gif','Loopcount',inf, 'DelayTime',0.8);
else
imwrite(I,map,filename,'gif','WriteMode','append','DelayTime',0.8);
end

end

% Isomap降维
[mappedX, mapping] = compute_mapping(X, 'Isomap', no_dims);
if isequal(labels(mapping.conn_comp),labels)
sprintf('%s','sucess')
else sprintf('%s','error')
end

figure
scatter3(mappedX(:,1), mappedX(:,2), mappedX(:,3),5, labels(mapping.conn_comp),'filled')
title('Result of Isomap')
drawnow

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab 降维