Stats

Popular Posts

Followers

Mathematica 教學:主成分分析

戴忠淵 於 2015年8月15日星期六 下午5:30 發表
With[{data=
Block[{t},
{#,3+#*0.2+RandomReal[NormalDistribution[0,1]]}&/@
Table[RandomReal[NormalDistribution[0,2]],{100}]]},
Manipulate[
Module[{p1=point1,p2=point2,m,v1,myline,pp,pcadata,
pcaslope},
pcaslope=
Divide@@Reverse@Eigensystem[Covariance[data]][[2,1]];
(*直線斜率*)
m=(p2[[2]]-p1[[2]])/(p2[[1]]-p1[[1]]);
(*計算投影座標*)
v1=point2-point1//N;
pcadata=p1+Projection[#-point1,v1]&/@data;
Column[{
"最大特徵根="<>ToString@Eigensystem[Covariance[data]][[1,1]],
"變異數="<>ToString@Variance[Normalize[v1].#&/@data],
"",
Plot[{m(x-p1[[1]])+p1[[2]],
pcaslope(x-p1[[1]])+p1[[2]]},{x,-20,20},
PlotStyle->{{Green,Thickness[0.01]},Automatic},
PlotRange->{{-10,10},{-7.5,12.5}},
Axes->False,
Frame->True,
AspectRatio->1,
Epilog->{Blue,PointSize[0.0125],Point[data],
Red,PointSize[0.025],Point[pcadata],
Dashed,MapThread[Line[{#1,#2}]&,{data,pcadata}]},
ImageSize->300]},Alignment->Center]],
{{point1,{-1,-5}},Locator},
{{point2,{2,1}},Locator}]]

Tags: , , , , ,

讀者回應 ( 0 意見 )

發佈留言

Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.

如果這篇文章對你有幫助,那請留個訊息給我~