1:起因
(1)最近1直在處理大數據,從MB ----> GB的變化,是1次質的奔騰,相應的工具也在變 從widows到linux,從單機單核 到 hadoop多節點的計算
(2)問題來了,面對海量的數據,如何從中發掘實用的信息或發現潛伏的現象,可視化工具多是必不可少的 ;
(3)可視化工具可以說百度1大篇,可是作為研究者的我們,程序猿的我們可能更希望能夠抽象出1種數學模型,對現實的現象進行非常好的描寫和刻畫
(4)Python(數據清洗和處理) + MATLAB(模型分析) 或 c++/java/hadoop(數據清洗和處理) + MATLAB(模型分析)
(5)先前的1篇博文可以參考 c++ fstream + string 處理大數據 和 大數據處理之道 (MATLAB 篇(2))
(6)程序猿鄙視學習MATLAB的人,是由于對MATLAB的理解不夠深入,MATLAB是matrix&laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室);說起處理矩陣(其實就是數值型的數組嘛)計算問題那是數一數二的快,簡便。MATLAB可以進行矩陣運算、繪制函數和數據、實現算法、創建用戶界面、連接其他編程語言的程序等。
2:MATLAB學習(遍歷文件夾,矩陣的重新組合,pca)
(1) save(tofilename, 'ANS', '-ASCII') 保存結果ANS矩陣到制定路徑tofilename中
(2)num2str(num) 將數字轉化為string型;
(3)strcat(rootpath,num2str(i),'*.csv') 字符串拼接函數 用于絕對路徑的生成
(4)[coef,score,latent,t2] = princomp(data); 主要成份分析法,latent是貢獻率排序的(從大到小),score是生成的新數據,根據貢獻率排序的
3:PCA講授
(1)特點抽取是指將高緯度的特點經過某個函數映照至低緯度作為新的特點。經常使用的特點抽取方法就是PCA
(2)當貢獻率累加至95%(當要求不是特別嚴格時,85%以上也能夠),以后的維數會不再顯示;所以根據貢獻率(例如前兩位已到達95%),那末最后可以降至2維,便可以只選取SCORE的前兩列來表示原始數據。
(3)PCA算法步驟:
設有m條n維數據。
1)將原始數據按列組成n行m列矩陣X
2)將X的每行(代表1個屬性字段)進行零均值化,即減去這1行的均值
3)求出協方差矩陣C=frac{1}{m}XX^mathsf{T}
4)求出協方差矩陣的特點值及對應的特點向量
5)將特點向量按對應特點值大小從上到下按行排列成矩陣,取前k行組成矩陣P
6)Y=PX即為降維到k維后的數據
4:程序(注釋比較詳細)
上一篇 NYOJ A-B Problem