我是一名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