Python scikit regression PCA on faces



我有一个数据集,其中的面孔显示快乐的情绪。每个图像都有一个百分比(整数值)来表示脸部的快乐程度,范围从0-100%(0表示中性,100表示最大快乐)。我想对此应用 PCA 以减少以后应用机器学习的维度,但我想知道如何解决这个问题。

到目前为止我的代码:

import os
import cv2
import numpy as np
from sklearn.decomposition import PCA
folder = os.path.join('..','data','diff_face_s')

#Holds per emotion the data
class diffPCA():
    def __init__(self, emo):
        self.emo = emo
        self.data = np.empty([1,270,270], dtype=np.uint8)
        self.pers = [0]
        self.perc = [0]
        #PCA
        self.pca = PCA(n_components = 2)
    #Add flattened image    
    def process(self, img, pers, perc):
        #img: diff_face, pers: person, perc: percentage
        img_raw = cv2.imread(os.path.join(folder, img), 0)
        img_flat = img_raw.flatten()
        self.data = np.vstack(img_flat)
        self.pers.append(pers)
        self.perc.append(perc)
    def doPCA(self):
        self.pca.fit(self.data)
    def printPCA(self):
        print(self.pca.explained_variance_ratio_)

#Emotions
happy = diffPCA(1)
for img in os.listdir(folder):
    print(img)
    #name
    #perc
    #pers
    #if name starts with 1:
    happy.process(img, perc, pers)
happy.doPCA()
happy.printPCA()

问题:

根据百分比降低图像维度的最佳方法是什么?我可以只制作一个带有百分比的目标列表吗?我有 100 个班级(每个百分比 1 个)吗?

库中的此示例可能有助于了解如何执行此操作。

相关内容

  • 没有找到相关文章

最新更新