我是一名Python初學者,我正在使用python實現主成分分析(PCA),但我有一個計算平均值的問題。 這裏是我的代碼:主成分分析(PCA)使用python計算平均值
import Image
import os
from PIL import Image
from numpy import *
import numpy as np
#import images
dirname = "C:\\Users\\Karim\\Downloads\\att_faces\\New folder"
X = [np.asarray(Image.open(os.path.join(dirname, fn))) for fn in os.listdir(dirname)]
#get number of images and dimentions
path, dirs, files = os.walk(dirname).next()
num_images = len(files)
image_file = "C:\\Users\\Karim\\Downloads\\att_faces\\New folder\\2.pgm"
img = Image.open(image_file)
width, height = img.size
print width
print height
print num_images
M = (X-mean(X.T,axis=1)).T # subtract the mean (along columns)
我得到的錯誤:
AttributeError: 'list' object has no attribute 'T'
當我試圖np.cov(X)我得到這個錯誤: ValueError異常:對象不對齊 – user2229953 2013-04-06 19:07:49
很難診斷此沒有看到創建'X'的代碼。它是一個ndarray?如果是這樣,它的形狀是什麼?我的猜測是,「X」不是一個ndarray或者你的圖像陣列不是全部相同的長度。如果圖像數組的長度不一樣,那麼嘗試計算協方差(有或沒有numpy)會有不同的問題。 – bogatron 2013-04-06 20:41:11
@ user2229953看起來'X'是'PIL'圖像生成的'np.arrays'列表。可能應該在'X'的每個元素上進行分析,而不是在'np.asarray(X)'上進行分析。 – askewchan 2013-04-07 00:07:16