Я начинаю с python, и я реализую анализ основных компонентов (PCA) с использованием python, но у меня возникает проблема вычисления среднего значения. Вот мой код:Средство вычисления основных компонентов (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
Это трудно диагностировать это, не видя код, который создает 'x'. Это ndarray? Если да, то какова его форма? Я предполагаю, что либо 'X' не является ndarray, либо ваши массивы изображений не имеют одинаковой длины. Если массивы изображений не имеют одинаковой длины, тогда у вас будет другая проблема, пытающаяся вычислить ковариацию (с или без numpy). – bogatron
@ user2229953 Кажется, что 'X' - это список' np.arrays', сгенерированный из изображений PIL. Вероятно, анализ должен выполняться для каждого элемента 'X', а не' np.asarray (X) ' – askewchan