最初は、正規化された 400,000 枚の画像がありました (グレー値の増加)。その後、各画像の DFT を実行し、3200 の絶対フーリエ係数を持つ 400000 サンプルのデータを取得しました。
今、私は PCA と SVD をしたいと思います。私のデータはすでに正規化されており、すべての値が同じ単位であるため、計算に「生データ」を使用できると考えました。ただし、PCA の固有値と SVD の特異値は異なります。(画像/リンクを表示)
私は何を間違っていますか?PCA および SVD でデータを利用するにはどうすればよいですか? 正規化、標準化、生?
私を助けてください!ありがとうございました
私のコード:
# samples 400000x3200
# SVD
U,S,VT = svd(samples, full_matrices=False)
tot_S = sum(S)
var_exp_S = [(i / tot_S) for i in S]
cum_var_exp_S = np.cumsum(var_exp_S)
# PCA
cov_mat = np.cov(samples.T)
eigen_vals, eigen_vecs = np.linalg.eig(cov_mat)
eigen_vals = np.asarray(sorted(eigen_vals,reverse=True))
tot = sum(eigen_vals)
var_exp = [(i / tot) for i in eigen_vals]
cum_var_exp = np.cumsum(var_exp)
num= 3200
plt.figure(figsize=(10,5))
plt.subplot(121)
plt.title('PCA')
plt.step(range(1,num+1),cum_var_exp[:num], where='mid',color='r')
plt.ylabel('share of variance')
plt.xlabel('principal components')
plt.legend()
plt.grid()
plt.subplot(122)
plt.title('SVD')
plt.step(range(1,num+1),cum_var_exp_S[:num], where='mid',color='r')
plt.ylabel('share of variance')
plt.xlabel('principal components')
plt.legend()
plt.grid()