我現(xiàn)在正在學(xué)習(xí)子空間方法來對(duì)手寫數(shù)字進(jìn)行分類。子空間方法需要一個(gè)自相關(guān)矩陣,我發(fā)現(xiàn)np.corrcoef()可以進(jìn)行計(jì)算。在的文檔中np.corrcoef(),默認(rèn)情況下說“每一行代表一個(gè)變量,列中帶有觀察值”。因此,我轉(zhuǎn)置了輸入數(shù)據(jù),因?yàn)槊恳恍卸际且粋€(gè)觀察值(4132 obs,784 vars)。但是,該函數(shù)將通過轉(zhuǎn)置返回一個(gè)包含info或NaN的數(shù)組。然后,我無法計(jì)算特征值和特征向量。如果不進(jìn)行轉(zhuǎn)置,我可以完美地進(jìn)行計(jì)算,但這不是我想要的(形狀數(shù)組((4132,4132)))。我不明白為什么會(huì)這樣。這是我的代碼:X = train[train["label"]==i].iloc[:,1:] C = np.corrcoef(X.T)print(np.isnan(np.min(C))) #-> print True if there are Nan valueseig_val,eig_vec = linalg.eigh(C) #-> returns ValueErrorprint(eig_val.shape,eig_vec.shape)X是這樣的(4132行,785列)
1 回答

慕后森
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
問題在于,某些行(在轉(zhuǎn)置后)沒有方差,因此協(xié)方差矩陣中存在零值(可以使用進(jìn)行檢查np.cov
)。如果檢查文檔是否為np.corrcoef
,則相關(guān)系數(shù)除以協(xié)方差矩陣中的元素,因此除以0,因?yàn)槟承┬袥]有方差。
添加回答
舉報(bào)
0/150
提交
取消