Python scikit 人脸回归 PCA

标签 python machine-learning scikit-learn regression pca

我有一个数据集,其中的面孔表现出快乐的情绪。每张图像都有一个面部快乐程度的百分比(整数值),范围为 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 个类(class)(每个百分比 1 个类(class))吗?

最佳答案

This example from the gallery可能有助于了解如何去做。

关于Python scikit 人脸回归 PCA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26946871/

相关文章:

python - Django 1.8 不使用我的自定义登录页面

python - 关键词多词时高效搜索关键词

machine-learning - 准备训练数据的通用框架?

python - 列表字典的笛卡尔积作为项目

python - : False==(False or True) is False? 在 python 中到底意味着什么

machine-learning - 哪些观察结果与带有 sklearn 包实现的 LDA 中的主题模型相关联

tensorflow - 是否有任何解决方法可以沿着可变长度的维度取消堆叠张量?

algorithm - GBrank : what is the final model?

python - 运行 scikit 学习示例时 matplotlib 出错

python - pandas (sub)Dataframe 中的最大值和最小值