试使用matlab的PCA函数对Yale人脸数据进行降维,并观察前20个特征向量所对应的图像。
Yale人脸数据共包含166张图片,每张图片的大小为320*243。X矩阵的大小为77760*166,占用的内存大小为103M字节(float对象占用24字节,其中真正用于保存值的空间为8字节大小,我们这里暂且用一个float占8字节计算);协方差矩阵的大小为77760*77760,占用的内存大小为48G字节。这也太大了!
采用10.5中介绍的计算协方差矩阵的特征值和特征向量的方法,曲线救国。
代码:
# -*- coding:gbk -*-
"""
@Author: Victoria
@Date: 2017.10.30 9:30
"""
import cv2
import numpy as np
import operator
import os
import scipy.io as sio
from PIL import Image, ImageDraw
import sklearn.decomposition
class PCA():
def __init__(self, d):
self.d = d
def train