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}]]
Mathematica 教學:主成分分析
由 戴忠淵 於 2015年8月15日星期六
下午5:30 發表
讀者回應 ( 0 意見 )
訂閱發佈留言 (Atom)
發佈留言
Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.
如果這篇文章對你有幫助,那請留個訊息給我~