我正在嘗試使用python進行主成分分析(PCA)。這裏是我的代碼:Python - 主成分分析(PCA)錯誤
import os
from PIL import Image
import numpy as np
import glob
from matplotlib.mlab import PCA
#Step1: put database images into a 3D array
filenames = glob.glob('C:\\Users\\Karim\\Downloads\\att_faces\\New folder/*.pgm')
filenames.sort()
img = [Image.open(fn).convert('L') for fn in filenames]
images = np.dstack([np.array(im) for im in img])
# Step2: create 2D flattened version of 3D input array
d1,d2,d3 = images.shape
b = np.zeros([d1,d2*d3])
for i in range(len(images)):
b[i] = images[i].flatten()
#Step 3: PCA
results = PCA(b)
results.Wt
但我得到一個錯誤RuntimeError: we assume data in a is organized with numrows>numcols
我試圖通過b = np.zeros([d2*d3, d1])
更換b = np.zeros([d1,d2*d3])
我ValueError: could not broadcast input array from shape (2760) into shape (112)
誰能幫助我?
感謝您的幫助。我明白了你的觀點,並且我發現它更符合邏輯,但是在嘗試代碼時,建議擺脫第二個錯誤,我得到了另一個錯誤:'AttributeError:flatten' – user2229953 2013-04-09 09:40:27
我假設'img'的元素是numpy陣列。再次看到我的編輯 – 2013-04-09 09:42:14
我得到了類似於第二個錯誤的錯誤:'ValueError:無法將形狀(10304)中的輸入數組廣播到形狀(2760)' – user2229953 2013-04-09 10:08:55