原始数据的主成分分析
加载示例数据集。
加载哈尔德
成分数据有4个变量的13个观察值。
找到成分数据的主要组件。
Coeff = PCA(成分)
Coeff =4×4.-0.0678 -0.6460 0.5673 0.5062 -0.6785 -0.0200 -0.5440 0.4933 0.0290 0.7553 0.4036 0.5156 0.7309 -0.1085 -0.4684 0.4844
的行COEFF.
包含四个成分变量的系数,它的列对应四个主成分。
当数据集中缺少值时,找到主组件系数。
加载示例数据集。
加载进口- 85
数据矩阵X
在第3栏中有13个连续变量:轮基,长度,宽度,高度,遏制重量,发动机尺寸,孔,行程,压缩比,马力,峰值 - RPM,城市MPG和高速公路 - MPG.变量孔和笔划缺少四行56到59中的四个值,并且变量马力和峰值-RPM缺少行131和132中的两个值。
执行主成分分析。
多项式系数= pca (X (:, 3:15));
默认情况下,主成分分析
执行由此指定的操作'行','完成'
名称-值对的论点。此选项可删除观察结果南
计算前的值。行南
s被重新插入分数
和司令部
在相应的位置,即第56到59行,第131行和第132行。
使用“成对”
执行主成分分析。
多项式系数= pca (X (:, 3:15),'行',“成对”);
在这种情况下,主成分分析
计算(我,j)元素的协方差矩阵使用的行没有南
列中的值我要么j的X
.注意,得到的协方差矩阵可能不是正定的。此选项适用于算法主成分分析
用途是特征值分解。当您未指定算法时,如本示例中,主成分分析
把它设置为'eig'
.如果您需要“圣言”
作为算法,与“成对”
选项,然后主成分分析
返回警告消息,将算法设置为'eig'
并继续。
如果你使用“行”,“所有”
名称-值对的论点,主成分分析
终止,因为该选项假定数据集中没有丢失的值。
多项式系数= pca (X (:, 3:15),'行','全部');
使用PCA(第180行)原始数据的错误包含NaN缺失值,而“行”选项设置为“全部”。请考虑使用“完整”或配对“选项。
在进行主成分分析时,使用逆变量方差作为权重。
加载示例数据集。
加载哈尔德
使用作为可变权重的成分差异的逆的逆进行主成分分析。
[wcoeff, ~,潜伏,~,解释]= pca(成分,......“VariableWeights”,“方差”)
wcoeff =4×4.-2.7998 2.9940 -3.9736 1.4180 -8.7743 -6.4411 4.8927 9.9863 2.5240 -3.8749 -4.0845 1.7196 9.1714 7.5529 3.2710 11.3273
潜在的=4×12.2357 1.5761 0.1866 0.0016
解释了=4×155.8926 39.4017 4.6652 0.0406
注意系数矩阵,WCOEFF.
,不是标准正交的。
计算标准正交系数矩阵。
cofforth = inv(diag(std(成分)))* wcoeff
Coefforth =.4×4.-0.4760 0.5090 -0.6755 0.2411 -0.5639 -0.4139 0.3144 0.6418 0.3941 -0.6050 -0.6377 0.2685 0.5479 0.4512 0.1954 0.6767 0.1954 0.6767 0.1954 0.6760 0.1954 0.6767
检查新系数矩阵的正交性,系数
.
Coefforth * Coefforth'
ans =4×4.1.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 1.0000 0.0000 0.0000 -0.0000 0.0000 1.0000
当数据中有缺失值时,使用交替最小二乘(ALS)算法寻找主成分。
加载示例数据。
加载哈尔德
成分数据有4个变量的13个观察值。
使用ALS算法执行主成分分析并显示组件系数。
[Coeff,得分,潜伏,Tsquared,解释] = PCA(成分);COEFF.
Coeff =4×4.-0.0678 -0.6460 0.5673 0.5062 -0.6785 -0.0200 -0.5440 0.4933 0.0290 0.7553 0.4036 0.5156 0.7309 -0.1085 -0.4684 0.4844
随机引入缺失值。
Y =成分;RNG(“默认”);重复性的%ix =随机('unif',0,1,尺寸(y))<0.30;Y(ix)= nan
y =13×4.7 26 6 NaN 1 29 15 52 NaN NaN 8 20 11 31naN 47 7 52 6 3335AnaNaN NaN NaN 73 33 33 31aNaN44 2 NaN NaN NaN 32 21 47 4 26
大约30%的数据现在缺少值,所示南
.
使用ALS算法执行主成分分析并显示组件系数。
[COEFF1,得分1,潜在,Tsquared,解释,MU1] = PCA(Y,......'算法','als');coeff1
COEFF1 =4×4.-0.0362 0.8215 -0.5252 0.2190 -0.6831 -0.0998 0.1828 0.6999 0.0169 0.5575 0.8215 -0.1185 0.7292 -0.0657 0.1261 0.6694
显示估计的平均值。
mu1.
mu1 =1×48.9956 47.9088 9.0451 28.5515
重建观察到的数据。
T = score1*coeff1' + repmat(mu1,13,1)
t =13×4.7.0000 26.0000 6.0000 51.5250 1.0000 29.0000 15.0000 52.0000 10.7819 53.0230 8.0000 20.0000 11.0000 31.0000 13.5500 47.0000 7.0000 52.0000 6.0000 33.0000 10.4818 55.0000 7.8328 17.9362 3.0982 71.0000 11.9491 6.0000 1.0000 31.0000 -0.5161 44.0000 2.0000 53.7914 5.7710 22.0000 21.0000 47.0000 4.0000 4.0000 26.0000⋮
ALS算法估计数据中的缺失值。
比较结果的另一种方法是在系数向量跨越的两个空格之间找到角度。在使用ALS找到具有缺失值的完整数据和数据的系数之间找到角度之间的角度。
子空间(Coeff,Coeff1)
ans = 9.1336e-16
这是一个小价值。它表明结果如果您使用主成分分析
与'行','完成'
名称-值对参数,如果没有丢失的数据,并且使用主成分分析
与'算法','als'
名称 - 值对参数缺少数据时彼此靠近。
使用主成分分析使用'行','完成'
名称值对参数并显示组件系数。
[coeff2 score2,潜伏,tsquared,解释说,mu2] = pca (y,......'行',“完成”);coeff2
COEFF2 =4×3-0.2054 0.8587 0.0492 -0.6694 -0.3720 0.5510 0.1474 -0.3513 -0.5187 0.6986 -0.0298 0.6518
在这种情况下,主成分分析
删除缺少值的行y
只有四行,没有缺少值。主成分分析
只返回三个主组件。你不能使用'行','成对'
选项,因为协方差矩阵不是正面的semidefinite和主成分分析
返回错误消息。
找到使用LissWise删除的缺失值的完整数据和数据的系数之间的角度(何时'行','完成'
)。
子空间(Coeff(:,1:3),Coeff2)
ans = 0.3576
两个空间之间的角度要大得多。这表明这两个结果是不同的。
显示估计的平均值。
MU2.
mu2 =1×49.8750 29.6000
在这种情况下,平均值只是样本均值y
.
重建观察到的数据。
score2 * coeff2’
ans =13×4.Nan NaN NaN NaN -7.5162 -18.3545 4.0968 22.0056纳米纳米纳米纳米NaN NaN -0.5644 5.3213 -3.3432 3.6040纳米纳纳纳纳纳纳纳纳纳纳纳纳纳南纳纳纳NaN Nan NaN NaN NaN NaN NaN NaN 12.8315 -0.1076 -6.3333 -3.7758
这表明删除的行包含南
值不起作用以及ALS算法。当数据具有太多缺失值时,使用ALS更好。
找到主组件的系数,分数和差异。
加载示例数据集。
加载哈尔德
成分数据有4个变量的13个观察值。
找到成分数据组件的主成分系数,分数和差异。
[多项式系数,分数,潜伏]= pca(成分)
Coeff =4×4.-0.0678 -0.6460 0.5673 0.5062 -0.6785 -0.0200 -0.5440 0.4933 0.0290 0.7553 0.4036 0.5156 0.7309 -0.1085 -0.4684 0.4844
得分=13×4.36.8218 -6.8709 -4.5909 0.3967 29.6073 4.6109 -2.2476 -0.3958 -12.9818 -4.2049 0.9022 -1.1261 23.7147 -6.6341 1.8547 -0.3786 -0.5532 -4.4617 -6.0874 0.1424 -10.8125 -3.6466 0.9130 -0.1350 -32.5882 8.9798 -1.6063 0.0818 22.6064 10.7259 3.2365 0.3243 -9.2626 8.9854 -0.0169 -0.5437 -3.2840 -14.1573 7.0465 0.3405⋮
潜在的=4×1517.7969 67.4964 12.4054 0.2372
每一列的分数
对应于一个主成分。矢量,潜
,存储四个主成分的方差。
重构中心成分数据。
Xcenterd =得分* coeff'
Xcenterd =.13×4.-0.4615 -22.1538 -5.7692 -6.4615 30.0000 -19.1538 3.2308 22.0000 3.5385 7.8462 -3.7692 -10.0000 3.5385 -17.1538 -3.7692 17.0000 -0.4615 3.8462 -5.7692 3.0000 3.5385 6.8462 -2.7692 -8.0000 -4.4615 22.8462 5.2308 -24.0000 -6.4615 -17.1538 10.2308 14.0000 -5.4615 5.8462 6.2308 -8.0000 13.5385 -1.1538 -7692 -4.0000⋮
新数据Xcorter.
是通过从相应列中减去列的原始成分数据来居中。
在单个图中可视化每个变量的正交主组件系数和每个观察的主成分分数。
biplot(多项式系数(:,1:2),'分数'分数(:1:2),'varlabels',{“v_1”,“v_2”,“v_3”,“两者”});
所有四个变量都由矢量中的所有四个变量表示,矢量的方向和长度表示每个变量如何为图中的两个主组件有贡献。例如,位于水平轴上的第一主组件具有用于第三和第四变量的正系数。因此,向量 和 被引导到情节的右半部分。第一个主成分中系数最大的是第四个,对应于变量 .
在垂直轴上的第二主组件具有变量的负系数 , , 和 ,以及变量的正系数 .
这个二维双图还包括13个观测值中的每个点,坐标表示每个观测值在图中的两个主要成分。例如,靠近图左边缘的点的第一个主成分得分最低。这些点是根据最大得分值和最大系数长度进行缩放的,因此只能从图中确定它们的相对位置。
找到霍特林的t平方统计值。
加载示例数据集。
加载哈尔德
成分数据有4个变量的13个观察值。
执行主成分分析并请求t平方值。
[Coeff,得分,潜伏,Tsquared] = PCA(成分);司令部
Tsquared =13×15.6803 3.0758 6.0002 2.6198 3.3681 0.5668 3.4818 3.9794 2.6086 7.4818⋮
只请求前两个主成分,并在请求主成分的缩减空间中计算t平方值。
[Coeff,得分,潜伏,Tsquared] = PCA(成分,'numcomponents',2);司令部
Tsquared =13×15.6803 3.0758 6.0002 2.6198 3.3681 0.5668 3.4818 3.9794 2.6086 7.4818⋮
注意,即使你指定了一个简化的分量空间,主成分分析
使用所有四个组件计算完整空间中的T线值。
约简空间中的t平方值对应于约简空间中的马氏距离。
Tsqreduced = Mahal(得分,得分)
Tsqreduced =13×13.3179 2.0079 0.5874 1.7382 0.2955 0.4228 3.2457 2.6914 1.3619 2.9903⋮
通过在减小空间中的全部空间和Mahalanobis距离中取出T线值和Mahalanobis距离的差异来计算丢弃空间中的T线值。
Tsqdiscarded = tsquared - tsqreduced
Tsqdiscarded =13×12.3624 1.0679 5.4128 0.8816 3.0726 0.1440 0.2362 1.2880 1.2467 4.4915⋮
找到主组件解释的百分比变异性。显示主组件空间中的数据表示。
加载示例数据集。
加载进口- 85
数据矩阵X
在第3栏中有13个连续变量:轮基,长度,宽度,高度,遏制重量,发动机尺寸,孔,行程,压缩比,马力,峰值 - RPM,城市MPG和高速公路 - MPG.
找到这些变量的主要组件解释的百分比变异性。
[Coeff,得分,潜在,司干,解释] = PCA(x(:,3:15));解释
解释了=13×164.3429 35.4484 0.1550 0.0379 0.0078 0.0048 0.0013 0.0011 0.0005 0.0002⋮
前三个组件解释了所有可变性的99.95%。
在前三个主要组件的空间中可视化数据表示。
散射3(得分(:,1),得分(:,2),得分(:,3))轴平等的Xlabel('第一主成分')ylabel(第二主成分的) zlabel (第三主成分的)
数据显示沿第一主分量轴的最大可变性。这是第一轴的所有可能选择之间的最大可能方差。沿第二主成分轴的可变性是第二轴的所有可能剩余选择中的最大值。第三主成分轴具有第三大变化,其明显小于沿第二主成分轴的可变性。第四个至第十三主体成分轴不值得检查,因为它们仅解释了数据中所有可变性的0.05%。
要跳过任何输出,可以使用~
而是在相应的元素中。例如,如果您不想获取T线值,请指定
[Coeff,得分,潜伏,〜,解释] = PCA(X(:,3:15));
找到一个数据集的主组件并将PCA应用于另一个数据集。当您具有培训数据集和机器学习模型的测试数据集时,此过程非常有用。例如,您可以使用PCA预处理培训数据,然后培训模型。要使用测试数据集测试训练模型,您需要将从训练数据获得的PCA转换应用于测试数据集。
此示例还介绍了如何生成C / C ++代码。因为主成分分析
金宝app支持代码生成,您可以生成使用训练数据集执行PCA的代码,并将PCA应用于测试数据集。然后将代码部署到设备。在此工作流程中,您必须通过培训数据,这可以具有相当大的尺寸。要在设备上保存内存,可以分开培训和预测。使用主成分分析
在MATLAB®中,将PCA应用于设备上生成的代码中的新数据。
生成C / C ++代码需要MATLAB®Coder™。
将PCA应用于新数据
使用使用将数据加载到表中readtable
.数据集位于文件中CreditRating_Historical.dat
,包含历史信用评级数据。
creditrating = readtable (“CreditRating_Historical.dat”);信用(1:5,:)
ans =.5×8表ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA工业评分_____ _____ _____ _______ ________ _____ ________ _______ 62394 0.013 0.104 0.036 0.447 0.142 3 { 'BB'} 48608 0.232 0.335 0.062 1.969 0.281 8 { 'A'} 42444 0.311 0.367 0.074 1.935 0.366 1 {'A'} 48631 0.194 0.263 0.062 1.017 0.228 4 {'BBB'} 43768 0.121 0.413 0.413 0.413 0.057 3.647 0.466 12 {'AAA'}
第一列是每个观察的ID,最后一列是评级。将第二列指定为预测器数据并指定最后一列(评分
)作为回应。
X = table2array (creditrating (: 2:7));Y = creditrating.Rating;
使用前100个观察作为测试数据和其余的培训数据。
xtest = x(1:100,:);XTrain = x(101:结束,:);ytest = y(1:100);YTrain = Y(101:结束);
查找培训数据集的主要组件XTrain.
.
[Coeff,Scoretrain,〜,〜,解释,MU] = PCA(XTrain);
此代码返回四个输出:COEFF.
,批困陷阱
,解释
, 和亩
.使用解释
(解释的总方差的百分比)以找到解释至少95%可变性所需的组件数量。使用COEFF.
(主成分系数)和亩
(估计的方法XTrain.
)将PCA应用于测试数据集。使用批困陷阱
(主要成分分数)而不是XTrain.
当你训练一个模特的时候。
显示由主要成分解释的百分比变异性。
解释
解释了=6×158.2614 41.2606 0.3875 0.0632 0.0269 0.0005
前两个组件解释了超过95%的所有变异性。找到解释至少95%变异性所需的组件数量。
idx =找到(cumsum(解释)> 95,1)
Idx = 2
使用前两个组件列车分类树。
scoretrain95 = scoretrain(:,1:Idx);mdl = fitcree(scoretrain95,Ytrain);
MDL.
是A.ClassificationTree.
模型。
要使用培训的模型进行测试集,您需要通过使用从训练数据集获得的PCA来转换测试数据集。通过减去获得测试数据的主成分分数亩
从XTest
并乘以COEFF.
.只有前两个组件的分数是必要的,因此使用前两个系数COEFF(:,1:IDX)
.
scoretest95 =(xtest-mu)* coeff(:,1:Idx);
通过训练的模型MDL.
和转换的测试数据集scoreTest
到预测
用于预测测试集的评级。
YTEST_PREDITED =预测(MDL,SCORETEST95);
生成代码
生成将PCA应用于数据的代码,并使用经过培训的模型预测额定值。请注意,生成C / C ++代码需要MATLAB®Coder™。
将分类模型保存到文件中mymdl.mat
通过使用Savelarnerforcoder.
.
SavelAlnerForCoder(MDL,'mymdl');
定义命名的入口点函数mypcapredict.
接受测试数据集(XTest
)和PCA信息(COEFF.
和亩
))并返回测试数据的额定值。
添加% # codegen
编译器指令(或Pragma)到函数签名后的入门点函数,表示您打算为Matlab算法生成代码。添加此指令指示MATLAB代码分析仪帮助您诊断和修复在代码生成期间会导致错误的违规。
函数Label = mypcapredict(xtest,coeff,mu)% # codegen%使用PCA变换数据scoreTest = bsxfun (@minus XTest,μ)*多项式系数;%负载训练的分类模型mdl = loadlearnerforcoder('mymdl');使用加载模型预测额定值标签=预测(MDL,天地定);
mypcapredict.
将PCA应用于新数据使用COEFF.
和亩
,然后使用变换数据预测额定值。通过这种方式,您不会通过培训数据,这可以具有相当大的尺寸。
注意:如果单击此页面的右上角的按钮,请在MATLAB®中打开此示例,然后Matlab®打开示例文件夹。此文件夹包含入口点函数文件。
使用以下命令生成代码Codegen.
(MATLAB编码器).因为C和C ++是静态类型的语言,所以必须在编译时确定入口点函数中所有变量的属性。要指定数据类型和精确输入数组大小,请通过MATLAB®表达式,该表达式表示具有某个数据类型和数组大小的值的值arg游戏
选择。如果在编译时观察值的数量未知,还可以使用Coder.typeof.
(MATLAB编码器).有关详细信息,请参阅指定代码生成的变量大小参数.
Codegen.mypcapredict.arg游戏{coder.typeof(xtest,[INF,6],[1,0]),COEFF(:,1:IDX),MU}
代码成功。
Codegen.
生成MEX函数mypcapredict_mex.
具有平台依赖的扩展。
验证生成的代码。
ytest_predicted_mex = mypcapredict_mex(xtest,coeff(:,1:idx),mu);isequal(ytest_preedette,ytest_predicted_mex)
ans =逻辑1
isequal
返回逻辑1(真的
),这意味着所有的输入都是相等的。比较证实了预测
的函数MDL.
和mypcapredict_mex.
函数返回相同的评级。
有关代码生成的更多信息,请参阅代码生成简介和代码生成和分类学习者应用程序.后者描述了如何使用Classification Learner应用程序执行PCA并训练模型,以及如何基于训练的模型生成C/ c++代码来预测新数据的标签。
X
- - - - - -输入数据输入数据,用于计算主要组件,指定为一个n-经过-p矩阵。行X
对应观察值,列对应变量。
数据类型:单身的
|双倍的
指定可选的逗号分隔的对名称,值
论点。名称
是参数名称和价值
是相应的价值。名称
必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen
.
'算法','eig','中心',false,'行','全部','num components',3
指定主成分分析
使用特征值分解算法,不居中数据,使用所有的观察,并仅返回前三个主组件。
'算法'
- - - - - -主成分算法“圣言”
(默认)|'eig'
|'als'
主成分算法主成分分析
用于执行主成分分析,指定为逗号分隔对组成'算法'
下面是其中之一。
价值 | 描述 |
---|---|
“圣言” |
默认。奇异值分解(SVD)X . |
'eig' |
协方差矩阵的特征值分解(EIG)。当观察的数量时,EIG算法比SVD更快,n,超过变量的数量,p,但不太准确,因为协方差的条件数量是条件数量的平方X . |
'als' |
交替的最小二乘(ALS)算法。该算法找到了最佳排名 -k近似通过分解 ALS旨在更好地处理缺失的值。优选成对缺失( |
例子:“算法”、“eig”
'中心'
- - - - - -定心柱指示器真的
(默认)|错误的
居中列的指示器,指定为逗号分隔的配对'中心'
和其中一个逻辑表达式。
价值 | 描述 |
---|---|
真的 |
默认。 |
错误的 |
在这种情况下 |
例子:'中心',假
数据类型:逻辑
“经济”
- - - - - -经济规模输出指标真的
(默认)|错误的
经济规模输出的指标自由度,d,小于变量的数量,p,指定为逗号分隔的配对组成“经济”
和其中一个逻辑表达式。
价值 | 描述 |
---|---|
真的 |
默认。 当变量数量的数量时,此选项可以明显更快p远大于d. |
错误的 |
|
注意,当d<p,得分(:,d + 1:p)
和潜伏(d + 1:p)
必然为零,和列多项式系数(d + 1:: p)
定义与之正交的方向X
.
例子:“经济”,虚假
数据类型:逻辑
'numcomponents'
- - - - - -要求的组件数量请求的组件数量,指定为逗号分隔对组成'numcomponents'
和一个标量整数k满足0 <k≤p, 在哪里p原始变量的数量在里面吗X
.当指定时,主成分分析
返回第一个k列的COEFF.
和分数
.
例子:'numcomponents',3
数据类型:单身的
|双倍的
'行'
- - - - - -采取行动南
价值“完成”
(默认)|“成对”
|'全部'
采取行动南
值X
,指定为逗号分隔的配对组成'行'
下面是其中之一。
价值 | 描述 |
---|---|
“完成” |
默认。观察 |
“成对” |
此选项仅适用于算法时 当您指定时 注意,得到的协方差矩阵可能不是正定的。在这种情况下, |
'全部' |
|
例子:'行','成对'
'重量'
- - - - - -观察权重观察权重,指定为逗号分隔的配对组成'重量'
和一个长度的向量n包含所有正元素。
数据类型:单身的
|双倍的
“VariableWeights”
- - - - - -可变权重“方差”
可变权重,指定为逗号分隔的配对组成“VariableWeights”
下面是其中之一。
价值 | 描述 |
---|---|
行向量 |
长度矢量p包含所有正元素。 |
“方差” |
变量权值是样本方差的倒数。如果你也使用 如果 |
例子:'变量','veriance'
数据类型:单身的
|双倍的
|char
|细绳
'coeff0'
- - - - - -系数初值系数矩阵的初始值COEFF.
,指定为逗号分隔的配对组成'coeff0'
和一个p-经过-k矩阵,其中p是变量的数量,和k是请求的主成分的数量。
笔记
只有在此时可以使用此名称值对'算法'
是'als'
.
数据类型:单身的
|双倍的
'得分0'
- - - - - -分数的初始值分数矩阵的初始值分数
,指定为逗号分隔的配对'得分0'
和n-经过-k矩阵,其中n观察的次数是多少k是请求的主成分的数量。
笔记
只有在此时可以使用此名称值对'算法'
是'als'
.
数据类型:单身的
|双倍的
'选项'
- - - - - -迭代选项迭代选项,指定为分隔的配对'选项'
一个由实例化
函数。主成分分析
在选项结构中使用下列字段。
字段名称 | 描述 |
---|---|
'展示' |
显示输出水平。选择是'离开' ,'最后' , 和“通路” . |
'maxiter' |
允许的最大数步骤。默认值为1000.与优化设置不同,达到麦克斯特 价值被视为融合。 |
'tolfun' |
正数为成本函数提供终止公差。默认为1e-6。 |
'tolx' |
给出了渐近算法中左右因子矩阵L和R元素相对变化的收敛阈值。默认为1e-6。 |
笔记
只有在此时可以使用此名称值对'算法'
是'als'
.
您可以更改这些字段的值并指定新结构主成分分析
使用'选项'
名称-值对的论点。
例子:选择= statset('pca');opt.maxiter = 2000;coeff = pca(x,'选项',选择);
数据类型:结构体
COEFF.
-主成分系数主成分系数,返回为ap-经过-p矩阵。每一列的COEFF.
包含一个主组件的系数。列按降序组件方差顺序,潜
.
分数
-主成分分数主成分得分,以矩阵形式返回。行分数
对应于观察和组件的列。
潜
- 主成分差异主分量方差,也就是协方差矩阵的特征值X
,作为列向量返回。
司令部
-霍特林的t平方统计Hotelling的T级统计,它是每个观察的标准化分数的平方和,以列向量的形式返回。
解释
- 解释的总方差的百分比由每个主成分解释的总方差的百分比,作为列向量返回。
Hotelling的T平方统计是从数据集中的每个观察的多变量距离的统计测量。
即使你请求的组件少于变量的数量,主成分分析
使用所有主组件来计算T线统计(在完整空间中计算它)。如果您希望减少或丢弃的空间中的T线统计,请执行以下操作之一:
对于简化空间中的t平方统计量,使用玛哈尔(得分,得分)
.
对于丢弃空间中的t平方统计量,首先使用[Coeff,Score,Latent,Tsquared] = PCA(X,'NumComponents',K,...)
,使用缩小空间中的T平方统计Tsqreduced = Mahal(得分,得分)
然后带来差异:司令部
-Tsqreduced.
.
自由度的程度,d,等于n- 1,如果数据中心和n否则,在哪里:
n是没有任何行的行数南
如果你使用'行','完成'
.
n是没有任何行的行数南
在列对中,具有最大数量的行数南
如果你使用'行','成对'
.
注意,当使用可变权重时,系数矩阵不是正交的。假设调用您使用的可变权重矢量varwei
,以及主成分系数矢量主成分分析
回来是WCOEFF.
.然后可以使用这个变换计算标准正交系数诊断(SQRT(varwei))* wcoeff
.
的主成分分析
函数施加了一个符号约定,强制每个列中具有最大幅度的元素系数
是积极的。改变系数向量的符号并不改变它的意义。
[1] Jolliffe, i.t。主成分分析.第二辑。,斯普林斯,2002年。
[2] Krzanowski,W. J.多变量分析原则.牛津大学出版社,1988年出版社。
g.a. F. Seber多变量的观察.威利,1984年。
[4]杰克逊,J.E. A.用户指南主体组件.Wiley,1988年。
[5] PCA和SPCA的Roweis,S.“EM算法”。在1997年的神经信息处理系统进步会议上的诉讼中.Vol.10(NIPS 1997),剑桥,马,美国:MIT Press,1998,PP。626-632。
[6] Ilin,A.和T. Raiko。“存在缺失值存在的主要成分分析的实用方法。”j·马赫。学习。Res。.卷。11,2010年8月,PP。1957-2000。
对于内存不足的数据,这个函数金宝app支持高数组,但有一些限制。
主成分分析
通过计算协方差矩阵和使用内存直接与高数组工作pcacov
函数来计算主分量。
金宝app支持的语法是:
coeff = pca(x)
[coeff,score,latent] = pca(x)
[Coeff,得分,潜在,解释] = PCA(x)
[Coeff,Score,Latent,Tsquared] = PCA(x)
[多项式系数,分数,潜伏,tsquared解释]= pca (X)
不支持名称 - 值对参数。金宝app
有关更多信息,请参阅高存储器数据的阵列.
使用说明和限制:
什么时候'算法'
是'als'
, 这'展示'
价值'选项'
被忽略了。
的价值观'重量'
和“VariableWeights”
名称 - 值对参数必须是真实的。
价值“经济”
名称值对参数必须是编译时间常量。例如,使用“经济”,虚假
生成的代码中的名称-值对参数,包括{coder.Constant(经济),coder.Constant (false)}
在里面arg游戏
的价值Codegen.
(MATLAB编码器).
名称值对参数中的名称必须是编译时常量。
生成的代码始终返回第五个输出解释
作为栏目矢量。
生成的代码始终返回第六输出亩
作为一排矢量。
如果亩
是空的,主成分分析
返回亩
作为一个1×0阵列。主成分分析
不转换亩
到0乘0个空数组。
生成的代码不处理输入矩阵X
,所有南
值作为特殊情况。输出尺寸与相应的有限输入是相称的。
为了在部署生成代码的设备上节省内存,可以将训练(从输入数据构建PCA组件)和预测(执行PCA转换)分开。在MATLAB中构造PCA分量®.然后,定义使用主组件系数执行PCA转换的入口点函数(COEFF.
)及估计平均数(亩
),这是输出主成分分析
.最后,生成入口点函数的代码。例如,请参见将PCA应用于新数据并生成C / C ++代码.
有关代码生成的更多信息,请参阅代码生成简介和一般代码生成工作流程.
使用说明和限制:
您无法指定名称值参数'算法'
作为'als'
.
默认的主组件算法是SVD(名称-值参数)'算法','svd'
)。在GPU上而不是CPU上执行时,SVD算法很少快。指定名称值参数'算法'
作为'eig'
加快GPU计算。
有关更多信息,请参阅在GPU上运行MATLAB函数(并行计算工具箱).
你点击一个链接对应于这个MATLAB命令:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。