主成分分析法(principal component analysis,pca)就是一種運用線性代數的知識來進行資料降維的方法,它將多個變數轉換為少數幾個不相關的綜合變數來比較全面地反映整個資料集。這是因為資料集中的原始變數之間存在一定的相關關係,可用較少的綜合變數來綜合各原始變數之間的資訊。這些綜合變數稱為主成分,各主成分之間彼此不相關,即所代表的的資訊不重疊。
座標變換:把觀測點在原座標軸的座標轉換到新座標系下,同時也把原始變數轉換為了長軸的變數和短軸的變數,這種轉換是通過對原始變數進行線性組合的方式而完成的。
假設乙份資料集,有m個樣本,每個樣本由n個特徵(變數)來描述,那麼我們可以按照以下的步驟進行降維:
1、將資料集中的每個樣本作為列向量,按列排列構成乙個n行m列的矩陣;
2、將矩陣的每乙個行向量(每個變數)都減去該行向量的均值,從而使得新行向量的均值為0,得到新的資料集矩陣x;
3、求x的協方差矩陣,並求出協方差矩陣的特徵值λ和單位特徵向量e;
4、按照特徵值從大到小的順序,將單位特徵向量排列成矩陣,得到轉換矩陣p,並按px計算出主成分矩陣;
5、用特徵值計算方差貢獻率和方差累計貢獻率vi;vi=xi/(x1+x2+…),取方差累計貢獻率超過85%的前k個主成分,或者想降至特定的k維,直接取前k個主成分。
主成分分析函式:
[coeff,score,letent]=princomp(x);
供獻率:每一維資料對於區分全部資料的供獻,供獻率最大的顯然是主成分,第二大的是次主成分…
[coef,score,latent,t2] = princomp(x);
x:為要輸入的n維原始資料。帶入這個matlab自帶函式,將會生成新的n維加工後的資料(即score)。此資料與之前的n維原始資料一一對應。
score:生成的n維加工後的資料存在score裡。它是對原始資料進行的解析,進而在新的座標系下獲得的資料。他將這n維資料按供獻率由大到小分列。(即在改變座標系的景象下,又對n維資料排序)
latent:是一維列向量,每乙個資料是對應score裡響應維的供獻率,因為數占領n維所以列向量有n個資料。由大到小分列(因為score也是按供獻率由大到小分列)。
coef:是係數矩陣。經由過程cofe可以知道x是如何轉換成score的。但這個轉換不是單純的轉換,必須使用下列計算方法,即score(:,i)=coef*(x(:,i)-mean(x(:,i))),這樣才能得到。
用你的原矩陣x*coeff(:,1:n)才是你要的的新資料,其中的n是你想降到多少維。而n的取值取決於對特徵值的累計貢獻率的計算。
cwstd.m——用總和標準化法標準化矩陣
cwfac.m——計算相關係數矩陣;計算特徵值和特徵向量;對主成分進行排序;計算各特徵值貢獻率;挑選主成分(累計貢獻率大於85%),輸出主成分個數;計算主成分載荷
cwscore.m——計算各主成分得分、綜合得分並排序
cwprint.m——讀入資料檔案;呼叫以上三個函式並輸出結果
PANDAS第二次打卡
第2章 索引 import numpy as np import pandas as pd df pd.read csv data table.csv index col id df.head school class gender address height weight math physic...
python第二次打卡
if 語句的 expr true suite 塊只有當條件表示式 expression 結果為真時才執行,否則將繼續執行緊跟在該 塊後面的語句。單個 if 語句中的 expression 條件表示式可以通過布林操作符 and,or和not 實現多重條件判斷。python 提供與 if 搭配使用的 e...
學習筆記第二次打卡
讀入文字 分詞建立字典,將每個詞對映到乙個唯一的索引 index 將文字從詞的序列轉換為索引的序列,方便輸入模型 建立詞典 class vocab object def init self,tokens,min freq 0,use special tokens false counter coun...