%使用pca函数进行降维
X=[1,2;3,3;3,5;5,4;5,6;6,5;8,7;9,8]; %样本矩阵,每行一个样本向量
[coeff, score, latent]=pca(X); %主成分分析
coeff, %主成分分量 (每列为一个变换空间中的基向量)
score, %主成分, score(:,1) 为X的一维表示, score为X在变换空间中的二维表示
latent, %X样本协方差矩阵的特征值
clc, clear all, close all
load hald %载入数据集
X=ingredients; %将数据集中的13x4矩阵矩阵赋给X
[coeff,score]=pca(X,'Centered','off'), %调用函数pca, 不对数据中心化
%快速PCA函数
function [V,pcaX]=fastPCA(X,k)
%输入: X--样本矩阵,每行为一个样本
%输出: V--主成分向量
%pcaX--降维后的k维样本特征向量组成的矩阵,每一行一个样本,列数k为降维后的样本特征列数
[n,m]=size(X);
meanV=mean(X); %样本均值向量
Z=(X-repmat(meanV,n,1));
CovM=Z*Z'; %计算协方差矩阵的转置
[V,D]=eigs(CovM,k); %计算CovM的前k个特征值和特征向量
V=Z'*V; %得到协方差矩阵(CovM)'的特征向量
%特征向量归一化为单位特征向量
for i=1:k
V(:,i)=V(:,i)/norm(V(:,i));
end
pcaX=Z*V; %线性变换(投影)降维至k维
save('PCA.mat','V','meanV'); %保存变换矩阵V和变换原点meanV
%用fastPCA函数对鸢尾属植物数据集降至2维
clc, clear all, close all
load fisheriris
X = meas; Y = species;
[n,m]=size(X);
[V,pcaX]=fastPCA(X,2);
gscatter(pcaX(:,1),pcaX(:,2),Y,'rbm','*vo');
%LLE MATLAB程序
function [Z] = lle(X,k,l)
%X-样本矩阵,m*n 矩阵,m为样本向量的维数,n为样本的个数
%k-近邻数,l-低维空间维数,Z为降维后的数据矩阵,维度为l*n
[m,n] = size(X);
fprintf(1,'LLE运行于 %d 维空间中的 %d 个样本点上\n',m,n);
%第一步: 计算点与点之间的距离并寻找k个近邻点.
fprintf(1,'-->寻找 %d 个近邻点.\n',k);
X2 = sum(X.^2,1);
distance = repmat(X2,n,1)+repmat(X2',1,n)-2*X'*X;
%欧氏距离公式的展开||x_i-x_j||^2=x_i^2+x_j^2-2x_i'x_j
[~,index] = sort(distance); %距离排序(从小到大)
neighborhood = index(2:(1+k),:); %取第2到第k+1个最小距离
%第二步: 计算重构权重矩阵
fprintf(1,'-->求解重构权重矩阵.\n');
if(k>m) %如果近邻点个数大于样本特征向量维数, 需要正则化
fprintf(1,'-->近邻点个数大于样本特征向量维数需要正则化.\n');
tol=1e-3;
else
tol=0;
end
W = zeros(k,n); %权重矩阵初始化
for i=1:n
z = X(:,neighborhood(:,i))-repmat(X(:,i),1,k); %将第i个点平移至坐标原点
C = z'*z; %局部协方差矩阵
C = C + eye(k,k)*tol*trace(C); %k>m时加上正则化项
W(:,i) = C\ones(k,1); %解方程组Cw=1
W(:,i) = W(:,i)/sum(W(:,i)); %按行归一化权重矩阵
end
%第三步: 计算矩阵M=(I-W)'(I-W)
fprintf(1,'-->计算局部线性嵌入.\n');
%M=eye(n,n); %M是一个只有4kn个非零元的稀疏矩阵
M = sparse(1:n,1:n,ones(1,n),n,n,4*k*n);
for i=1:n %计算矩阵M
w = W(:,i);
j = neighborhood(:,i);
M(i,j) = M(i,j) - w';
M(j,i) = M(j,i) - w;
M(j,j) = M(j,j) + w*w';
end
%计算局部嵌入
options.disp = 0; options.isreal = 1; %结构变量options赋初值
[Z,~] = eigs(M,l+1,0,options); %计算矩阵M的前l+1个最小特征值对应的特征向量
Z = Z(:,2:l+1)'*sqrt(n);
fprintf(1,'程序运行结束.\n');
%用瑞士卷数据测试LLE算法
clc, close all, clear all;
k = 20 ;%(邻域点个数)
l = 2;%最大嵌入维数
%瑞士卷的生成图
rng (3)
n=1500;
t=(3*pi/2)*(1+2*rand(1,n));
s=21*rand(1,n);
X=[t.*cos(t); s; t.*sin(t)]; %3*n矩阵
figure (1)
plot3(X(1,:),X(2,:),X(3,:),'.'), %绘制瑞士卷三维曲线图
view([12 12]); %设置视角
%调用lle函数降维
Z=lle(X,k,l);
figure (2)
plot(Z(1,:),Z(2,:),'.b'), %绘制LLE降维后的二维平面图
function Z = MDS(D, d)
%多维缩放方法(MDS)的MATLAB 程序
%功能: 支持n个m维样本降维值d维.
%输入: D--n*n距离矩阵, d--低维空间维数
%输出: Z--低维空间的d*n 样本矩阵
[n, n1] = size(D);
if n~=n1
printf('D不是一个方阵');
end
D2 = D .* D; e = ones(n,1);
H = eye(n) - 1 / n * (e *e');
B =-0.5 * H * D2 * H;
%B=zeros(n,n);
% for i=1:n
% for j=1:n
% B(i,j)=-0.5*(D(i,j)^2 -1/n*D(i,:)*D(i,:)' -1/n*D(:,j)'*D(:,j) +1/n^2*sum(sum(D.^2)));
% end
% end
[U, Lam] = eig(B);
Lam = diag(Lam);
[~, pos] = sort(Lam,'descend');
index = pos(1:d);
U = U(:, index);
Z = diag(Lam(index))^(0.5) * U';
function Z = isomap(X, k, d)
%Isomap算法MATLAB程序, 该程序调用了MDS算法
%第一步: 按欧氏距离选取k个近邻点
[n, ~] = size(X); D = zeros(n);
for i =1 : n %构造距离矩阵D
xx = repmat(X(i, :), n, 1);
%复制X的第i行n次叠成一个n*n矩阵, 其每一行元素都是X的第i行元素
diff = xx - X;
dist = sum(diff.* diff, 2); %按行求和
[dd, pos] = sort(dist); %按升序排序
index = pos(1 : k + 1)'; %前k+1个设为近邻点
index2 = pos(k + 2 : n); %后n-k-1设为非近邻点
D(i,index) = sqrt(dd(index)); %距离矩阵第i行近邻点元素值
D(i, index2) = inf; %距离矩阵第i行非近邻点元素值设为无穷大
end
%第二步: 重新计算最短距离矩阵
for k=1:n
for i=1:n
for j=1:n
if D(i,j)>D(i,k)+D(k,j)
D(i,j)=D(i,k)+D(k,j);
end
end
end
end
%第三步: 调用MDS算法降维
Z = MDS(D, d);
%用瑞士卷数据测试Isomap算法
close all, clear all;
k = 20 ;%(邻域点个数)
l = 2;%最大嵌入维数
%瑞士卷的生成图
rng (3)
n=1500;
t=(3*pi/2)*(1+2*rand(1,n));
s=21*rand(1,n);
X=[t.*cos(t); s; t.*sin(t)]; %3*n矩阵
figure (1)
plot3(X(1,:),X(2,:),X(3,:),'.'), %绘制瑞士卷三维曲线图
view([12 12]); %设置视角
X = X';
Z=isomap(X,k,l);
figure (2)
plot(Z(1,:),Z(2,:),'.b'), %绘制Isomap降维后的二维平面图
问题:使用v-show后el-radio-group点击后页面不刷新了,但值是改变了的。如下图所示:解决办法:在el-radio-group加一个@change事件如: <el-form-item label-width="30px" v-if="!edit"> <el-radio-group @change="checkAddType" v-model="formData.resource"> <el-radio label="on_el-radio-group 绑定model点击后页面不刷新
1.提示:同理可以做其他绘制vite2.x+vue3安装忽略前面有安装介绍https://editor.csdn.net/md/?articleId=120757440vue3 百度地图和高德地图目前没有vue3的版本百度地图提供了用链接方式做https://lbsyun.baidu.com/index.php?title=jspopularGL/guide/helloworld2.效果图在index.html文件上添加百度地图<script type="text/javasc
vue3.0路由配置及跳转_vue3.0路由跳转
数据库MySQL经典面试题之SQL语句1.需要数据库表1.学生表Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别2.课程表Course(CID,Cname,TID) --CID --课程编号,Cname 课程名称,TID 教师编号3.教师表Teacher(TID,Tname) --TID 教师编号,Tnam..._mysql面试题sql语句
Office2003与2007完美共存的办法 在现在的办公软件中, Microsoft出品的 Office集成办公软件占据了绝大多数的市场份额,从最初的 Office 2000,到后面的 Office 2003以至近两年刚发行的 Office 2007,它直观的界面、强大的文字处理功能和出色图表计算,让我们大大简化了日常办公的烦琐。可在实际的工作中,数据交换和传输已经成了必不可少的工作单元,当一份...
WebSocket握手协议1、客户端握手请求(注意:键值之间有一个空格,行间有换行符号0x13x10或者说\r\n)GET /WebSocket/LiveVideo HTTP/1.1Upgrade: WebSocketConnection: UpgradeHost: localhost:8080 (客户端请求主机)Origin: http
Unity技术分享(64)|Shader Variant Collection|打包方式http://www.sohu.com/a/225673118_100123347原文链接:https://blog.uwa4d.com/archives/TechSharing_64.html我们将从日常技术交流中精选若干个开发相关的问题,建议阅读时间15分钟,认真读完必有收获。如果您有任何独到的..._shadervariantcollection 打包
只是为了提醒大家,书本的封面很明显的告知:请访问www.broadview.com.cn/22673下载相关代码。网上资源却很少,捉急啊,没有发现的眼睛只有抱怨作者的闲心,且学且加油吧!
什么是微电子技术微电子技术是在电子电路和电子系统的超小型化及微型化过程中逐渐形成和发展起来的,以集成电路为核心的电子技术。微电子技术的特征微电子技术是在传统的电子技术基础上发展起来的。之所以称之为“微电子”,顾名思义就是由于它是在微小的范畴内的一种先进技术,其特征是“四微”:①它对信号的加工处理是在一种固体内的微观电子运动中实现的;②它的工作范围是固体的微米级甚至晶格级微区;③对信号的传递交换只在..._微电子技术是现代信息技术的基础
package test; import java.applet.Applet; import java.awt.*; import java.awt.event.*; /** *//** * * Title: 键盘检测 * * * Description: 在applet使用键盘事件,检测键盘的动作。 * * * Copyri
【简答题】Java 支持多继承吗 ?【单选题】以下关于继承的叙述正确的是( )。【单选题】在 Java 中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为( )。【简答题】1. 请使用继承关系实现下列描述: (较难) 自行车和豪车属于车类型 车 ( car) :车牌号 ( cid) 、车型 ( dtype) 、价值 ( ..._在java中一个类可同时定义许多同名的方法这些方法的形容参数的个数类型或顺序
增加文件类型映射如果已经存在将覆盖之前的映射*@param fileStreamHexHead 文件流头部Hex信息@param extName 文件扩展名@return 之前已经存在的文件扩展名*/public static String putFileType(String fileStreamHexHead, String extName) {return FILE_TY..._java判断文件是否为ppt的工具类