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