pca主成分分析matlabPCA的PC1为什么超过100%,不知为什么,正常吗,请大侠们赐教啊

主成分分析(PCA)Matlab源码
本帖转载于MATLAB技术论坛,原帖参见
Principal Component Analysis(PCA)主成分分析,Matlab实例代码
function main()
%*************主成份分析************
%读入文件数据
X=load('data.txt');
%==========方法1:求标准化后的协差矩阵,再求特征根和特征向量=================
%标准化处理
[p,n]=size(X);
& & mju(j)=mean(X(:,j));
sigma(j)=sqrt(cov(X(:,j)));
& & for j=1:n
&&&Y(i,j)=(X(i,j)-mju(j))/sigma(j);
sigmaY=cov(Y);
%求X标准化的协差矩阵的特征根和特征向量
[T,lambda]=eig(sigmaY);
disp('特征根(由小到大):');
disp(lambda);
disp('特征向量:');
%方差贡献率;累计方差贡献率
Xsum=sum(sum(lambda,2),1);
fai(i)=lambda(i,i)/X
& & psai(i)=
sum(sum(lambda(1:i,1:i),2),1)/X
disp('方差贡献率:');
disp(fai);
disp('累计方差贡献率:');
disp(psai);
%综合评价....略
%============方法2:求X的相关系数矩阵,再求特征根和特征向量================
%X的标准化的协方差矩阵就是X的相关系数矩阵
R=corrcoef(X);
%求X相关系数矩阵的特征根和特征向量
[TR,lambdaR]=eig(R);
disp('特征根(由小到大):');
disp(lambdaR);
disp('特征向量:');
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。[转载]ENVI主成分分析(PCA)
ENVI主成分分析(PCA)是通过使用Principal
Components选项生成互不相关的输出波段,达到隔离噪声和减少数据集的维数的方法。
由于多波段数据经常是高度相关的,主成分变换寻找一个原点在数据均值的新的坐标系统,通过坐标轴的旋转来使数据的方差达到最大
&ENVI主成分分析(PCA)是通过使用Principal
Components选项生成互不相关的输出波段,达到隔离噪声和减少数据集的维数的方法。
由于多波段数据经常是高度相关的,主成分变换寻找一个原点在数据均值的新的坐标系统,通过坐标轴的旋转来使数据的方差达到最大,从而生成互不相关的输出波段。
主成分(PC)波段是原始波谱波段的线性合成,它们之间是互不相关的。可以计算输出主成分波段(与输入的波谱波段数相同)。
第一主成分包含最大的数据方差百分比,第二主成分包含第二大的方差,以此类推,最后的主成分波段由于包含很小的方差(大多数由原始波谱的噪声引起),因此显示为噪声。由于数据的不相关,主成分波段可以生成更多种颜色的彩色合成图像。
能完成正向和逆向的主成分(PC)旋转。
1.正向主成分(PC)旋转
正向PC旋转用一个线性变换使数据方差达到最大。当使用正向PC旋转时,ENVI允许计算新的统计值,或根据已经存在的统计值进行旋转。输出值可以存为字节型、浮点型、整型、长整型或双精度型。也可以基于特征值来提取PC旋转的输出内容,生成只包含所需的PC波段的输出。
计算新的统计值和旋转
使用Compute New Statistics and
Rotate选项可以计算数据特征值、协方差或相关系数矩阵以及PC正向旋转。
选择Transforms & Principal Components
& Forward PC Rotation & Compute New
Statistics and Rotate。
当出现Principal Components Input
File对话框时,选择输入文件或用标准ENVI选择程序选取子集。将会出现Forward PC Rotation
Parameters对话框。
注意:点击“Stats
Subset”按钮可以基于一个空间子集或感兴趣区计算统计信息。该统计将被应用于整个文件或文件的空间子集。详细介绍,请参阅第348页的“根据子集进行统计”。
在“Stats X/Y Resize Factor”文本框中键入小于1的调整系数,用于计算统计值时的数据二次采样。
注意:键入一个小于1的调整系数,将会提高统计计算速度。例如:使用一个0.1的调整系数,在统计计算时将只用到十分之一的像元。
若需要,键入一个输出统计文件名。使用箭头切换按钮,选择是根据“Covariance
Matrix”(协方差矩阵)还是根据“Correlation Matrix”(相关系数矩阵)计算主成分波段。
注意:一般说来,计算主成分时,选择使用协方差矩阵。当波段之间数据范围差异较大时,选择相关系数矩阵,并且需要标准化。
选用输出到“File”或“Memory”。在“Output Data Type”菜单中,选择所需的输出文件数据类型。
选择输出的主成分波段数。可以通过键入所需的数字,或用“Number of Output PC
Bands”标签旁的增减箭头按钮来确定输出的主成分波段数。默认的输出波段数等于输入波段数。也可以用特征值来选择输出的主成分波段数,按照如下步骤操作。
A. 点击“Select Subset from
Eigenvalues”标签附近的按钮,选择“YES”。统计信息将被计算,并出现Select Output PC
Bands对话框,列出每个波段和其相应的特征值。同时也列出每个主成分波段中包含的数据方差的累积百分比。
B. 在“Number of Output PC
Bands”文本框中,键入一个数字或点击箭头按钮,确定要输出的波段数。特征值大的主成分波段包含最大的数据方差。较小的特征值包含较少的数据信息和较多的噪声。为了节省磁盘空间,最好仅输出具有较大特征值的波段。
C. 在Select Output PC
Bands对话框中,点击“OK”。输出的PC旋转将只包含选择的波段数。例如:如果选择“4”作为输出的波段数,则只有前4个主成分波段会出现在输出文件里。
在Forward PC Rotation Parameters对话框中,点击“OK”。
ENVI处理完毕后,将出现PC EigenValues绘图窗口,主成分波段将被导入可用波段列表中,并用于显示。
对PCA 输出应用掩膜
当进行正向PC旋转时,可以对输出结果应用掩膜。如果已经为输入文件指定了掩膜,可以设定输出图像中被掩膜遮蔽部分的输出值。
在ENVI主菜单中,选择Transforms & Principal Components
& Forward PC Rotation & Compute New
Statistics and Rotate。当出现文件选择对话框时,选择输入图像并应用掩膜。当出现Forward PC
Parameters对话框时,在“Output Mask
Value”文本框中,为被掩膜遮蔽部分键入一个输出值。掩膜将被应用于统计信息的计算,输出数据的被遮蔽区域被置为输入的掩膜值。
根据子集进行统计
使用“Stats
Subset”按钮可以基于一个空间子集或感兴趣区来计算统计信息。该统计将被应用于整个文件或文件的空间子集。
在Forward PC Parameters对话框中,点击“Stats Subset”按钮。在Select Statistics
Subset对话框中,从下列选项中选择:
要选取一个标准图像空间子集,点击“Calculate Stats On Image
Subset”按钮,使用标准ENVI方法构建子集。要选取感兴趣区作为子集,点击“Calculate Stats On
ROI”按钮来显示一个感兴趣区列表,然后点击感兴趣区名来选择它。
提示:要将先前保存的感兴趣区添加到感兴趣列表中,在子集对话框中,点击“Restore
ROIs”,选择感兴趣区文件,然后选择感兴趣区。
根据已有统计进行PC
如果已经为数据统计出协方差和特征值,可以将它们输入到PC旋转中。可以在PC
旋转中使用包含如下数据的统计文件,包括:与输入数据具有相同波段数的协方差和特征值(也许已经用Basic Tools
&Compute Statistics选项,或在以前的PC旋转中计算出了这些统计值)。
提示:当为PCA旋转计算统计信息时,如果要避免使用某些特定像元,首先建立一个包含这些“坏”像元的掩膜,然后使用Basic Tools
&Statistics对掩膜图像计算协方差统计信息,也可以使用该统计文件进行主成分分析。
选择Transforms & Principal Components &
Forward PC Rotation & PC Rotation from Existing
Stats。当出现标准ENVI选择文件或子集对话框时,选择输入文件,并用标准ENVI文件选择程序建立所需的子集。将出现另一个文件选择对话框,在当前输入数据目录列表中,显示出了已经存在的统计文件(默认扩展名为
用标准ENVI文件选择程序选择统计文件。选择输出到“File”或“Memory”。在“Output Data
Type”按钮菜单中,选择输出文件的数据类型。选择输出的主成分波段数。
可以通过键入所需的数字,或用“Number of Output PC
Bands”标签旁的增减箭头按钮来确定输出的主成分波段数。默认的输出波段数等于输入波段数。也可以用特征值来选择输出的主成分波段数,按照如下步骤操作。
&&& 点击“Select
Subset from Eigenvalues”标签附近的按钮,选择“YES”。统计信息将被计算,并出现Select Output
PC Bands对话框,其中列出每个波段和其相应的特征值,同时也列出每个主成分波段中包含的数据方差的累积百分比。
&&& 在“Number of
Output PC Bands”文本框中,键入一个数字或点击箭头按钮,确定要输出的波段数。
特征值大的主成分波段包含最大的数据方差。较小的特征值包含较少的数据信息和较多的噪声。为了节省磁盘空间,最好仅输出具有较大特征值的波段。
在Select Output PC
Bands对话框中,点击“OK”。输出的PC旋转将只包含选择的波段数。例如:如果选择“4”作为输出的波段数,则只有前4个主成分波段会出现在输出文件里。
&&& 在Forward PC
Rotation Parameters对话框中,点击“OK”。
ENVI处理完毕后,将出现PC
EigenValues绘图窗口,主成分波段将被导入可用波段列表中,并用于显示。想了解特征值绘图窗口中有关编辑以及其它选项的信息,请参阅第193页的“交互式绘图功能”。
(2) 反向PC旋转
&&& 使用Inverse PC
Rotation工具可以将主成分图像变换回原始数据空间。
选择Transforms & Principal Components &
Inverse PC Rotation。当出现标准ENVI选择文件或子集对话框时,选择输入文件,并用标准ENV
文件选择程序建立所需子集。将出现另一个文件选择对话框,在当前输入数据目录列表中,显示出了已经存在的统计文件(默认扩展名为 .sta
)选择在正向PC旋转中存储
的统计文件。
注意:在选择反向PC旋转之前,统计文件必须已经存在。
&&& 在“Calculate
using”标签旁,使用箭头切换按钮选择“Covariance Matrix”或“Correlation Matrix”。
注意:如果想要将图像反变换回原始数据空间,使用与正向PC旋转中相同的计算方法。
选择输出到“File”或“Memory”。在“Output Data Type”按钮菜单中,选择输出文件的数据类型。
点击“OK”运行反向变换。ENVI处理完毕后,主成分波段将被导入到可用波段列表中,并用于显示(用标准灰阶或RGB彩色合成方法)。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(16644)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'主成分分析(PCA)及其在R里的实现',
blogAbstract:'\r\n&&&&&& 主成分分析(principal component analysis,PCA)是一种降维技术,把多个变量化为能够反映原始变量大部分信息的少数几个主成分。设X有p个变量,为n*p阶矩阵,即n个样本的p维向量。首先对X的p个变量寻找正规化线性组合,使它的方差达到最大,这个新的变量称为第一主成分,抽取第一主成分后,第二主成分的抽取方法与第一主成分一样,依次类推,直到各主成分累积方差达到总方差的一定比例。&&&&&& 主成分分析的计算步骤:&&&&& 假设样本观测数据矩阵为:&&&&& X=(x1,x2,x3,...xp),xi为n个样本在第i个属性上的观测值,是一个列向量',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:9,
publishTime:7,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}主成分分析法(PCA)最后得到的结果中只有一个特征值大于1,怎么解释?(我是用来分析污染情况)一般都会得到两个大于1的特征值,但是我的数据最后结果只有一个大于1的特征值,不知道该怎么作图,怎么分析,求大神指点
清枫TtTP71
一般是结合特征值和累计贡献率来看的 累计贡献率在80%以上就可以了
为您推荐:
扫描下载二维码主成分分析PCA(转)
降维的必要性
1.多重共线性--预测变量之间相互关联。多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯。
2.高维空间本身具有稀疏性。一维正态分布有68%的值落于正负标准差之间,而在十维空间上只有0.02%。
3.过多的变量会妨碍查找规律的建立。
4.仅在变量层面上分析可能会忽略变量之间的潜在联系。例如几个预测变量可能落入仅反映数据某一方面特征的一个组内。
降维的目的:
1.减少预测变量的个数
2.确保这些变量是相互独立的
3.提供一个框架来解释结果
降维的方法有:主成分分析、因子分析、用户自定义复合等。
PCA(Principal Component
Analysis)不仅仅是对高维数据进行降维,更重要的是经过降维去除了噪声,发现了数据中的模式。
PCA把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的m个特征互不相关。从旧特征到新特征的映射捕获数据中的固有变异性。
样本X和样本Y的协方差(Covariance):
协方差为正时说明X和Y是正相关关系,协方差为负时X和Y是负相关关系,协方差为0时X和Y相互独立。
Cov(X,X)就是X的方差(Variance).
当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵),方阵的边长是。比如对于3维数据(x,y,z),计算它的协方差就是:
若,则称是A的特征值,X是对应的特征向量。实际上可以这样理解:矩阵A作用在它的特征向量X上,仅仅使得X的长度发生了变化,缩放比例就是相应的特征值。
当A是n阶可逆矩阵时,A与P-1Ap相似,相似矩阵具有相同的特征值。
特别地,当A是对称矩阵时,A的奇异值等于A的特征值,存在正交矩阵Q(Q-1=QT),使得:
对A进行就能求出所有特征值和Q矩阵。
&&D是由特征值组成的对角矩阵
由特征值和特征向量的定义知,Q的列向量就是A的特征向量。
包是用于基本线性代数运算的java包,提供矩阵的cholesky分解、LUD分解、QR分解、奇异值分解,以及PCA中要用到的特征值分解,此外可以计算矩阵的乘除法、矩阵的范数和条件数、解线性方程组等。
1.特征中心化。即每一维的数据都减去该维的均值。这里的“维”指的就是一个特征(或属性),变换之后每一维的均值都变成了0。
很多数据挖掘的教材上都会讲到鹫尾花的例子,本文就拿它来做计算。原始数据是150&4的矩阵A:
每一列减去该列均值后,得到矩阵B:
-0.743333&&&&&&
0.446&&&&&&
-2.35867&&&&&&&
-0.998667&&&&&&
-0.943333&&&&&&
-0.054&&&&&
-2.35867&&&&&&&
-0.998667&&&&&&
-1.14333&&&&&&&
0.146&&&&&&
-2.45867&&&&&&&
-0.998667&&&&&&
-1.24333&&&&&&&
0.046&&&&&&
-2.25867&&&&&&&
-0.998667&&&&&&
-0.843333&&&&&&
0.546&&&&&&
-2.35867&&&&&&&
-0.998667&&&&&&
-0.443333&&&&&&
0.846&&&&&&
-2.05867&&&&&&&
-0.798667&&&&&&
-1.24333&&&&&&&
0.346&&&&&&
-2.35867&&&&&&&
-0.898667&&&&&&
-0.843333&&&&&&
0.346&&&&&&
-2.25867&&&&&&&
-0.998667&&&&&&
-1.44333&&&&&&&
-0.154&&&&&
-2.35867&&&&&&&
-0.998667&&&&&&
-0.943333&&&&&&
0.046&&&&&&
-2.25867&&&&&&&
-1.09867&&&&&&&
-0.443333&&&&&&
0.646&&&&&&
-2.25867&&&&&&&
-0.998667&&&&&&
-1.04333&&&&&&&
0.346&&&&&&
-2.15867&&&&&&&
-0.998667&&&&&&
-1.04333&&&&&&&
-0.054&&&&&
-2.35867&&&&&&&
-1.09867&&&&&&&
-1.54333&&&&&&&
-0.054&&&&&
-2.65867&&&&&&&
-1.09867&&&&&&&
-0.0433333&&&&&
0.946&&&&&&
-2.55867&&&&&&&
-0.998667&&&&&&
-0.143333&&&&&&
1.346&&&&&&
-2.25867&&&&&&&
-0.798667&&&&&&
-0.443333&&&&&&
0.846&&&&&&
-2.45867&&&&&&&
-0.798667&&&&&&
-0.743333&&&&&&
0.446&&&&&&
-2.35867&&&&&&&
-0.898667&&&&&&
-0.143333&&&&&&
0.746&&&&&&
-2.05867&&&&&&&
-0.898667&&&&&&
-0.743333&&&&&&
0.746&&&&&&
-2.25867&&&&&&&
-0.898667&&&&&&
-0.443333&&&&&&
0.346&&&&&&
-2.05867&&&&&&&
-0.998667&&&&&&
-0.743333&&&&&&
0.646&&&&&&
-2.25867&&&&&&&
-0.798667&&&&&&
-1.24333&&&&&&&
0.546&&&&&&
-2.75867&&&&&&&
-0.998667&&&&&&
-0.743333&&&&&&
0.246&&&&&&
-2.05867&&&&&&&
-0.698667&&&&&&
-1.04333&&&&&&&
0.346&&&&&&
-1.85867&&&&&&&
-0.998667&&&&&&
-0.843333&&&&&&
-0.054&&&&&
-2.15867&&&&&&&
-0.998667&&&&&&
-0.843333&&&&&&
0.346&&&&&&
-2.15867&&&&&&&
-0.798667&&&&&&
-0.643333&&&&&&
0.446&&&&&&
-2.25867&&&&&&&
-0.998667&&&&&&
-0.643333&&&&&&
0.346&&&&&&
-2.35867&&&&&&&
-0.998667&&&&&&
-1.14333&&&&&&&
0.146&&&&&&
-2.15867&&&&&&&
-0.998667&&&&&&
-1.04333&&&&&&&
0.046&&&&&&
-2.15867&&&&&&&
-0.998667&&&&&&
-0.443333&&&&&&
0.346&&&&&&
-2.25867&&&&&&&
-0.798667&&&&&&
-0.643333&&&&&&
1.046&&&&&&
-2.25867&&&&&&&
-1.09867&&&&&&&
-0.343333&&&&&&
1.146&&&&&&
-2.35867&&&&&&&
-0.998667&&&&&&
-0.943333&&&&&&
0.046&&&&&&
-2.25867&&&&&&&
-1.09867&&&&&&&
-0.843333&&&&&&
0.146&&&&&&
-2.55867&&&&&&&
-0.998667&&&&&&
-0.343333&&&&&&
0.446&&&&&&
-2.45867&&&&&&&
-0.998667&&&&&&
-0.943333&&&&&&
0.046&&&&&&
-2.25867&&&&&&&
-1.09867&&&&&&&
-1.44333&&&&&&&
-0.054&&&&&
-2.45867&&&&&&&
-0.998667&&&&&&
-0.743333&&&&&&
0.346&&&&&&
-2.25867&&&&&&&
-0.998667&&&&&&
-0.843333&&&&&&
0.446&&&&&&
-2.45867&&&&&&&
-0.898667&&&&&&
-1.34333&&&&&&&
-0.754&&&&&
-2.45867&&&&&&&
-0.898667&&&&&&
-1.44333&&&&&&&
0.146&&&&&&
-2.45867&&&&&&&
-0.998667&&&&&&
-0.843333&&&&&&
0.446&&&&&&
-2.15867&&&&&&&
-0.598667&&&&&&
-0.743333&&&&&&
0.746&&&&&&
-1.85867&&&&&&&
-0.798667&&&&&&
-1.04333&&&&&&&
-0.054&&&&&
-2.35867&&&&&&&
-0.898667&&&&&&
-0.743333&&&&&&
0.746&&&&&&
-2.15867&&&&&&&
-0.998667&&&&&&
-1.24333&&&&&&&
0.146&&&&&&
-2.35867&&&&&&&
-0.998667&&&&&&
-0.543333&&&&&&
0.646&&&&&&
-2.25867&&&&&&&
-0.998667&&&&&&
-0.843333&&&&&&
0.246&&&&&&
-2.35867&&&&&&&
-0.998667&&&&&&
1.15667&&&&
0.146&&&&&&
0.941333&&&&&&&
0.201333&&&&&&&
0.556667&&&&&&&
0.146&&&&&&
0.741333&&&&&&&
0.301333&&&&&&&
1.05667&&&&
0.046&&&&&&
1.14133&&&&
0.301333&&&&&&&
-0.343333&&&&&&
-0.754&&&&&
0.241333&&&&&&&
0.101333&&&&&&&
0.656667&&&&&&&
-0.254&&&&&
0.841333&&&&&&&
0.301333&&&&&&&
-0.143333&&&&&&
-0.254&&&&&
0.741333&&&&&&&
0.101333&&&&&&&
0.456667&&&&&&&
0.246&&&&&&
0.941333&&&&&&&
0.401333&&&&&&&
-0.943333&&&&&&
-0.654&&&&&
-0.458667&&&&&&
-0.198667&&&&&&
0.756667&&&&&&&
-0.154&&&&&
0.841333&&&&&&&
0.101333&&&&&&&
-0.643333&&&&&&
-0.354&&&&&
0.141333&&&&&&&
0.201333&&&&&&&
-0.843333&&&&&&
-1.054&&&&&
-0.258667&&&&&&
-0.198667&&&&&&
0.0566667&&&&&&
-0.054&&&&&
0.441333&&&&&&&
0.301333&&&&&&&
0.156667&&&&&&&
-0.854&&&&&
0.241333&&&&&&&
-0.198667&&&&&&
0.256667&&&&&&&
-0.154&&&&&
0.941333&&&&&&&
0.201333&&&&&&&
-0.243333&&&&&&
-0.154&&&&&
-0.158667&&&&&&
0.101333&&&&&&&
0.856667&&&&&&&
0.046&&&&&&
0.641333&&&&&&&
0.201333&&&&&&&
-0.243333&&&&&&
-0.054&&&&&
0.741333&&&&&&&
0.301333&&&&&&&
-0.0433333&&&&&
-0.354&&&&&
0.341333&&&&&&&
-0.198667&&&&&&
0.356667&&&&&&&
-0.854&&&&&
0.741333&&&&&&&
0.301333&&&&&&&
-0.243333&&&&&&
-0.554&&&&&
0.141333&&&&&&&
-0.0986667&&&&&
0.0566667&&&&&&
0.146&&&&&&
1.04133&&&&
0.601333&&&&&&&
0.256667&&&&&&&
-0.254&&&&&
0.241333&&&&&&&
0.101333&&&&&&&
0.456667&&&&&&&
-0.554&&&&&
1.14133&&&&
0.301333&&&&&&&
0.256667&&&&&&&
-0.254&&&&&
0.941333&&&&&&&
0.556667&&&&&&&
-0.154&&&&&
0.541333&&&&&&&
0.101333&&&&&&&
0.756667&&&&&&&
-0.054&&&&&
0.641333&&&&&&&
0.201333&&&&&&&
0.956667&&&&&&&
-0.254&&&&&
1.04133&&&&
0.201333&&&&&&&
0.856667&&&&&&&
-0.054&&&&&
1.24133&&&&
0.501333&&&&&&&
0.156667&&&&&&&
-0.154&&&&&
0.741333&&&&&&&
0.301333&&&&&&&
-0.143333&&&&&&
-0.454&&&&&
-0.258667&&&&&&
-0.198667&&&&&&
-0.343333&&&&&&
-0.654&&&&&
0.0413333&&&&&&
-0.0986667&&&&&
-0.343333&&&&&&
-0.654&&&&&
-0.0586667&&&&&
-0.198667&&&&&&
-0.0433333&&&&&
-0.354&&&&&
0.141333&&&&&&&
0.156667&&&&&&&
-0.354&&&&&
1.34133&&&&
0.401333&&&&&&&
-0.443333&&&&&&
-0.054&&&&&
0.741333&&&&&&&
0.301333&&&&&&&
0.156667&&&&&&&
0.346&&&&&&
0.741333&&&&&&&
0.401333&&&&&&&
0.856667&&&&&&&
0.046&&&&&&
0.941333&&&&&&&
0.301333&&&&&&&
0.456667&&&&&&&
-0.754&&&&&
0.641333&&&&&&&
0.101333&&&&&&&
-0.243333&&&&&&
-0.054&&&&&
0.341333&&&&&&&
0.101333&&&&&&&
-0.343333&&&&&&
-0.554&&&&&
0.241333&&&&&&&
0.101333&&&&&&&
-0.343333&&&&&&
-0.454&&&&&
0.641333&&&&&&&
0.256667&&&&&&&
-0.054&&&&&
0.841333&&&&&&&
0.201333&&&&&&&
-0.0433333&&&&&
-0.454&&&&&
0.241333&&&&&&&
-0.843333&&&&&&
-0.754&&&&&
-0.458667&&&&&&
-0.198667&&&&&&
-0.243333&&&&&&
-0.354&&&&&
0.441333&&&&&&&
0.101333&&&&&&&
-0.143333&&&&&&
-0.054&&&&&
0.441333&&&&&&&
-0.143333&&&&&&
-0.154&&&&&
0.441333&&&&&&&
0.101333&&&&&&&
0.356667&&&&&&&
-0.154&&&&&
0.541333&&&&&&&
0.101333&&&&&&&
-0.743333&&&&&&
-0.554&&&&&
-0.758667&&&&&&
-0.0986667&&&&&
-0.143333&&&&&&
-0.254&&&&&
0.341333&&&&&&&
0.101333&&&&&&&
0.456667&&&&&&&
0.246&&&&&&
2.24133&&&&
1.30133&&&&
-0.0433333&&&&&
-0.354&&&&&
1.34133&&&&
0.701333&&&&&&&
1.25667&&&&
-0.054&&&&&
2.14133&&&&
0.901333&&&&&&&
0.456667&&&&&&&
-0.154&&&&&
1.84133&&&&
0.601333&&&&&&&
0.656667&&&&&&&
-0.054&&&&&
2.04133&&&&
1.00133&&&&
1.75667&&&&
-0.054&&&&&
2.84133&&&&
0.901333&&&&&&&
-0.943333&&&&&&
-0.554&&&&&
0.741333&&&&&&&
0.501333&&&&&&&
1.45667&&&&
-0.154&&&&&
2.54133&&&&
0.601333&&&&&&&
0.856667&&&&&&&
-0.554&&&&&
2.04133&&&&
0.601333&&&&&&&
1.35667&&&&
0.546&&&&&&
2.34133&&&&
1.30133&&&&
0.656667&&&&&&&
0.146&&&&&&
1.34133&&&&
0.801333&&&&&&&
0.556667&&&&&&&
-0.354&&&&&
1.54133&&&&
0.701333&&&&&&&
0.956667&&&&&&&
-0.054&&&&&
1.74133&&&&
0.901333&&&&&&&
-0.143333&&&&&&
-0.554&&&&&
1.24133&&&&
0.801333&&&&&&&
-0.0433333&&&&&
-0.254&&&&&
1.34133&&&&
1.20133&&&&
0.556667&&&&&&&
0.146&&&&&&
1.54133&&&&
1.10133&&&&
0.656667&&&&&&&
-0.054&&&&&
1.74133&&&&
0.601333&&&&&&&
1.85667&&&&
0.746&&&&&&
2.94133&&&&
1.00133&&&&
1.85667&&&&
-0.454&&&&&
3.14133&&&&
1.10133&&&&
0.156667&&&&&&&
-0.854&&&&&
1.24133&&&&
0.301333&&&&&&&
1.05667&&&&
0.146&&&&&&
1.94133&&&&
1.10133&&&&
-0.243333&&&&&&
-0.254&&&&&
1.14133&&&&
0.801333&&&&&&&
1.85667&&&&
-0.254&&&&&
2.94133&&&&
0.801333&&&&&&&
0.456667&&&&&&&
-0.354&&&&&
1.14133&&&&
0.601333&&&&&&&
0.856667&&&&&&&
0.246&&&&&&
1.94133&&&&
0.901333&&&&&&&
1.35667&&&&
0.146&&&&&&
2.24133&&&&
0.601333&&&&&&&
0.356667&&&&&&&
-0.254&&&&&
1.04133&&&&
0.601333&&&&&&&
0.256667&&&&&&&
-0.054&&&&&
1.14133&&&&
0.601333&&&&&&&
0.556667&&&&&&&
-0.254&&&&&
1.84133&&&&
0.901333&&&&&&&
1.35667&&&&
-0.054&&&&&
2.04133&&&&
0.401333&&&&&&&
1.55667&&&&
-0.254&&&&&
2.34133&&&&
0.701333&&&&&&&
2.05667&&&&
0.746&&&&&&
2.64133&&&&
0.801333&&&&&&&
0.556667&&&&&&&
-0.254&&&&&
1.84133&&&&
1.00133&&&&
0.456667&&&&&&&
-0.254&&&&&
1.34133&&&&
0.301333&&&&&&&
0.256667&&&&&&&
-0.454&&&&&
1.84133&&&&
0.201333&&&&&&&
1.85667&&&&
-0.054&&&&&
2.34133&&&&
1.10133&&&&
0.456667&&&&&&&
0.346&&&&&&
1.84133&&&&
1.20133&&&&
0.556667&&&&&&&
0.046&&&&&&
1.74133&&&&
0.601333&&&&&&&
0.156667&&&&&&&
-0.054&&&&&
1.04133&&&&
0.601333&&&&&&&
1.05667&&&&
0.046&&&&&&
1.64133&&&&
0.901333&&&&&&&
0.856667&&&&&&&
0.046&&&&&&
1.84133&&&&
1.20133&&&&
1.05667&&&&
0.046&&&&&&
1.34133&&&&
1.10133&&&&
-0.0433333&&&&&
-0.354&&&&&
1.34133&&&&
0.701333&&&&&&&
0.956667&&&&&&&
0.146&&&&&&
2.14133&&&&
1.10133&&&&
0.856667&&&&&&&
0.246&&&&&&
1.94133&&&&
1.30133&&&&
0.856667&&&&&&&
-0.054&&&&&
1.44133&&&&
1.10133&&&&
0.456667&&&&&&&
-0.554&&&&&
1.24133&&&&
0.701333&&&&&&&
0.656667&&&&&&&
-0.054&&&&&
1.44133&&&&
0.801333&&&&&&&
0.356667&&&&&&&
0.346&&&&&&
1.64133&&&&
1.10133&&&&
0.0566667&&&&&&
-0.054&&&&&
1.34133&&&&
0.601333&&&&&&&
2.计算B的协方差矩阵C:
0.685694&&&&&&&
-0.0392685&&&&&
1.27368&&&&
0.516904&&&&&&&
-0.0392685&&&&&
0.188004&&&&&&&
-0.321713&&&&&&
-0.117981&&&&&&
1.27368&&&&
-0.321713&&&&&&
3.11318&&&&
1.29639&&&&
0.516904&&&&&&&
-0.117981&&&&&&
1.29639&&&&
0.582414&&&&&&&
3.计算协方差矩阵C的特征值和特征向量。
4.2248414     0       0       0
0          0.  0       
0          0       0.
0          0       0        0.
0.   0.   -0.   0.3172364
-0.    0.    0.   &
& -0.3240827
0.  -0..      -0.
0.    -0.    0.    0.
4.选取大的特征值对应的特征向量,得到新的数据集。
特征值是由大到小排列的,前两个特征值的和已经超过了所有特征值之和的97%。我们取前两个特征值对应的特征向量,得到一个4&2的矩阵M。令A'150&2=A150&4M4&2,这样我们就把150&4的数据A集映射成了150&2的数据集A',特征由4个减到了2个。
2.8271335&&&&&
5.6413345&&&&&
2.7959501&&&&&
5.1451715&&&&&
2.6215213&&&&&
5.1773814&&&&&
2.7649037&&&&&
5.0036022&&&&&
2.7827477&&&&&
5.648651&&&&&&
3.2314432&&&&&
6.0625092&&&&&
2.6904502&&&&&
5.2326213&&&&&
2.8848587&&&&&
5.4851323&&&&&
2.6233824&&&&&
4.7439288&&&&&
2.837496&&&&&&
5.2080359&&&&&
3.0048137&&&&&
5.9666624&&&&&
2.898198&&&&&&
5.3362466&&&&&
2.7239067&&&&&
5.0869876&&&&&
2.2861405&&&&&
4.8114466&&&&&
2.867797&&&&&&
6.5009233&&&&&
3.127471&&&&&&
6.6594805&&&&&
2.8888143&&&&&
6.132817&&&&&&
2.8630179&&&&&
5.633864&&&&&&
3.3122624&&&&&
6.1939719&&&&&
2.9239945&&&&&
5.8351996&&&&&
3.2008088&&&&&
5.7125959&&&&&
2.9681058&&&&&
5.7547583&&&&&
2.2954831&&&&&
5.4563413&&&&&
3.2082122&&&&&
5.4202505&&&&&
3.1551697&&&&&
5.2835156&&&&&
3.0034234&&&&&
5.1756719&&&&&
3.0422848&&&&&
5.4526144&&&&&
2.9489496&&&&&
5.6894119&&&&&
2.8715193&&&&&
5.634018&&&&&&
2.8784929&&&&&
5.1246505&&&&&
2.9228787&&&&&
5.117334&&&&&&
3.1012632&&&&&
5.7328089&&&&&
2.8637038&&&&&
6.1347075&&&&&
2.9141809&&&&&
6.4147479&&&&&
2.837496&&&&&&
5.2080359&&&&&
2.6443408&&&&&
5.3919215&&&&&
2.8861119&&&&&
5.921529&&&&&&
2.837496&&&&&&
5.2080359&&&&&
2.5294983&&&&&
4.8344766&&&&&
2.9210176&&&&&
5.5507867&&&&&
2.7412018&&&&&
5.5857866&&&&&
2.6591299&&&&&
4.3818646&&&&&
2.5130445&&&&&
4.9804183&&&&&
3.1058267&&&&&
5.5106443&&&&&
3.3025077&&&&&
5.7574212&&&&&
2.7956756&&&&&
5.0720467&&&&&
2.9737672&&&&&
5.8250931&&&&&
2.6710196&&&&&
5.0941501&&&&&
2.9686547&&&&&
5.901008&&&&&&
2.8074283&&&&&
5.4297384&&&&&
6.7961349&&&&&
6.0001695&&&&&
6.4437514&&&&&
5.6339266&&&&&
6.9754017&&&&&
5.8189198&&&&&
5.6923082&&&&&
4.4891254&&&&&
6.5984751&&&&&
5.3901207&&&&&
6.1517776&&&&&
4.8974035&&&&&
6.6065644&&&&&
5.5986187&&&&&
4.759874&&&&&&
4.3136202&&&&&
6.5546382&&&&&
5.5436868&&&&&
5.5011511&&&&&
4.5941521&&&&&
5.0002549&&&&&
4.0522372&&&&&
6.0224389&&&&&
5.2124439&&&&&
5.7736764&&&&&
4.7668379&&&&&
6.4953853&&&&&
5.1903675&&&&&
5.3364769&&&&&
5.0629127&&&&&
6.4389134&&&&&
5.7829664&&&&&
6.1709338&&&&&
4.9627499&&&&&
5.7458813&&&&&
4.9828064&&&&&
6.4537025&&&&&
4.7729094&&&&&
5.5545872&&&&&
4.7332394&&&&&
6.6275817&&&&&
5.2305124&&&&&
5.8681272&&&&&
5.2479059&&&&&
6.8078095&&&&&
4.9871684&&&&&
6.4318433&&&&&
5.1323376&&&&&
6.2253487&&&&&
5.465109&&&&&&
6.4109813&&&&&
5.6443412&&&&&
6.8423818&&&&&
5.5594003&&&&&
7.0687368&&&&&
5.5821223&&&&&
6.3237964&&&&&
5.1523966&&&&&
5.204006&&&&&&
4.949643&&&&&&
5.440998&&&&&&
4.6121911&&&&&
5.3194564&&&&&
4.6372386&&&&&
5.6463357&&&&&
5.0030194&&&&&
6.8900779&&&&&
4.8935226&&&&&
6.098616&&&&&&
4.8314411&&&&&
6.3185463&&&&&
5.5097803&&&&&
6.7317694&&&&&
5.722765&&&&&&
6.3242084&&&&&
4.9440526&&&&&
5.7565361&&&&&
5.0479987&&&&&
5.6758544&&&&&
4.6350671&&&&&
5.9743719&&&&&
4.6452005&&&&&
6.4015012&&&&&
5.2809153&&&&&
5.7402198&&&&&
4.9124716&&&&&
4.8042598&&&&&
4.3063037&&&&&
5.866874&&&&&&
4.8115092&&&&&
5.8424678&&&&&
5.1035466&&&&&
5.8865791&&&&&
5.0231053&&&&&
6.1530309&&&&&
5.3338002&&&&&
4.6028777&&&&&
4.5631602&&&&&
5.8091488&&&&&
4.9677114&&&&&
8.0430681&&&&&
5.3028838&&&&&
6.9254133&&&&&
4.7398024&&&&&
8.1278252&&&&&
5.6566652&&&&&
7.4821558&&&&&
5.1336016&&&&&
7.8610989&&&&&
5.2728454&&&&&
8.9082203&&&&&
5.8618983&&&&&
6.0307247&&&&&
4.123374&&&&&&
8.4433454&&&&&
5.6671066&&&&&
7.8310134&&&&&
5.0691818&&&&&
8.4294749&&&&&
6.0951088&&&&&
7.1732758&&&&&
5.5567668&&&&&
7.3136813&&&&&
5.0985747&&&&&
7.6767196&&&&&
5.5300099&&&&&
6.8559354&&&&&
4.5383128&&&&&
7.0966086&&&&&
4.7754209&&&&&
7.4160846&&&&&
5.4335471&&&&&
7.4605895&&&&&
5.3554582&&&&&
9.0001057&&&&&
6.486272&&&&&&
9.3060273&&&&&
5.5679974&&&&&
6.8096707&&&&&
4.5537158&&&&&
7.939508&&&&&&
5.6915111&&&&&
6.7094386&&&&&
4.7091479&&&&&
9.0106057&&&&&
5.7715045&&&&&
6.8990091&&&&&
5.1106987&&&&&
7.7871944&&&&&
5.6481141&&&&&
8.1255342&&&&&
5.8730957&&&&&
6.7689661&&&&&
5.1355922&&&&&
6.8020106&&&&&
5.1983025&&&&&
7.6341949&&&&&
5.1038737&&&&&
7.8989047&&&&&
5.7772489&&&&&
8.3523013&&&&&
5.6874736&&&&&
8.743683&&&&&&
6.6852526&&&&&
7.6700793&&&&&
5.0964032&&&&&
6.9544433&&&&&
5.170927&&&&&&
7.2909809&&&&&
4.8132622&&&&&
8.587862&&&&&&
6.0004966&&&&&
7.6563279&&&&&
5.453633&&&&&&
7.4162037&&&&&
5.3627746&&&&&
6.6801944&&&&&
5.1502251&&&&&
7.6189944&&&&&
5.6862121&&&&&
7.8256443&&&&&
5.497338&&&&&&
7.4337916&&&&&
5.7240021&&&&&
6.9254133&&&&&
4.7398024&&&&&
8.0746635&&&&&
5.5907028&&&&&
7.9307322&&&&&
5.6182322&&&&&
7.4553579&&&&&
5.5021455&&&&&
7.0370045&&&&&
4.9397096&&&&&
7.2753867&&&&&
5.3932482&&&&&
7.4129702&&&&&
5.430603&&&&&&
6.9010071&&&&&
每个样本正好是二维的,画在平面坐标系中如图:
鹫尾花数据集共分为3类花(前50个样本为一类,中间50个样本为一类,后50个样本为一类),从上图可以看到把数据集映射到2维后分类会更容易进行,直观上看已经是线性可分的了,下面我们用对其进行聚类。
当然我们已知了有3类,所以在设计SOFM网络时,我把竞争层节点数设为3,此时的聚类结果是前50个样本聚为一类,后100个样本聚为一类。当把竞争层节点数改为4时,仅第2类中的3个样本被误分到了第3类中,整体精度达98%!
using namespace
sample_num=150;&&&&&
//鹫尾花样本个数
class_num=4;&&&&&
//指定聚类的数目
iteration_&&&&&
//迭代的上限
vectordouble,double&
flowers(sample_num);&&&&&
//样本数据
vectordouble& &
weight(class_num);&&
const double
prime_eta=0.7;&&&&
//初始学习率
normalize(vector&&/CODE&double&
&&&&double
&&&&for(int
&&&&&&&&sum+=pow(vec[i],2);
&&&&sum=sqrt(sum);
&&&&for(int
&&&&&&&&vec[i]/=
void init_sample(string
filename){
&&&&ifstream
ifs(filename.c_str());
&&&&if(!ifs){
&&&&&&&&cerr&&"open
data file failed."&&
&&&&&&&&exit(1);
&&&&for(int
&&&&&&&&vector&&/CODE&double&
&&&&&&&&ifs&&X[0]&&X[1];
&&&&&&&&normalize(X);&&&&&&
//输入向量模长归一化
&&&&&&&&flowers[i]=make_pair(X[0],X[1]);
&&&&ifs.close();
void init_weight(){
&&&&srand(time(0));
&&&&for(int
&&&&&&&&vector&&/CODE&double&
&&&&&&&&ele[0]=rand()/(double)RAND_MAX;
&&&&&&&&ele[1]=rand()/(double)RAND_MAX;
&&&&&&&&normalize(ele);&&&&
//权值向量模长归一化
&&&&&&&&weight[i]=
int pick_winner(double
x1,double x2){
&&&&double
&&&&for(int
&&&&&&&&double
product=x1*weight[i][0]+x2*weight[i][1];
&&&&&&&&if(product&max){
&&&&&&&&&&&&max=
&&&&&&&&&&&&rect=i;
&&&&return
int main(int
argc,char *argv[]){
&&&&cout&&"input
iteration count"&&
//每个样本迭代的次数
&&&&cout&&"input
data file name"&&
&&&&string
&&&&iteration_ceil=count*sample_
&&&&init_sample(filename);
&&&&init_weight();
&&&&double
eta=prime_
&&&&double
gradient1=-1*9*prime_eta/iteration_
&&&&double
gradient2=-1*prime_eta/(9*iteration_ceil);
&&&&double
&&&&double
b2=prime_eta/9;
&&&&for(int
iteration=0;iteration
&&&&&&&&int
flower_index=iteration%sample_
&&&&&&&&double
x1=flowers[flower_index].
&&&&&&&&double
x2=flowers[flower_index].
&&&&&&&&int
winner=pick_winner(x1,x2);
&&&&&&&&weight[winner][0]+=eta*(x1-weight[winner][0]);
&&&&&&&&weight[winner][1]+=eta*(x2-weight[winner][1]);
&&&&&&&&for(int
&&&&&&&&&&&&vector&&/CODE&double&
&&&&&&&&&&&&W[0]=weight[i][0];
&&&&&&&&&&&&W[1]=weight[i][1];
&&&&&&&&&&&&normalize(W);
&&&&&&&&&&&&weight[i][0]=W[0];
&&&&&&&&&&&&weight[i][1]=W[1];
&&&&&&&&if(iteration&0.1*iteration_ceil){&&
//在前10%的迭代中,学习率线性下降到原来的10%
&&&&&&&&&&&&eta=gradient1*iteration+b1;
&&&&&&&&else{&&&&&&
//后90%的迭代中线性降低到0
&&&&&&&&&&&&eta=gradient2*iteration+b2;
&&&&for(int
&&&&&&&&double
x1=flowers[i].
&&&&&&&&double
x2=flowers[i].
&&&&&&&&int
winner=pick_winner(x1,x2);
&&&&&&&&cout&&i+1&&"\t"&&winner+1&&
&&&&return
输出聚类结果:
原文来自:博客园(华夏35度)/zhangchaoyang 作者:Orisun
转自:/zhangchaoyang/articles/2222048.html
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 pca主成分分析原理 的文章

 

随机推荐