zoukankan      html  css  js  c++  java
  • 人脸识别-特征提取

    1.数据加载

    '''
        Documents:PCA,NMF,KMeans
        Author:杨  景
        Time:2018.1.15
    '''
    from sklearn.decomposition import NMF
    from sklearn.decomposition import PCA
    from sklearn.cluster import KMeans
    from sklearn.datasets import fetch_lfw_people
    from sklearn.model_selection import train_test_split
    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
    
    people=fetch_lfw_people(min_faces_per_person=20,resize=0.7)
    image_shape=people.images[0].shape
    mask=np.zeros(people.target.shape,dtype=np.bool)
    for target in np.unique(people.target):
        mask[np.where(people.target==target)[0][:50]]=1
    X_people=people.data[mask]
    y_people=people.target[mask]
    X_people=X_people/255
    X_train,X_test,y_train,y_test=train_test_split(X_people,y_people,stratify=y_people,random_state=0)
    

    2.train

    nmf=NMF(n_components=100,random_state=0)
    nmf.fit(X_train)
    pca=PCA(n_components=100,random_state=0)
    pca.fit(X_train)
    kmeans=KMeans(n_clusters=100,random_state=0)
    kmeans.fit(X_train)
    X_reconstructed_pca=pca.inverse_transform(pca.transform(X_test))
    X_reconstructed_kmeans=kmeans.cluster_centers_[kmeans.predict(X_test)]
    X_reconstructed_nmf=np.dot(nmf.transform(X_test),nmf.components_)
    

    3.extract components

    fig,axes=plt.subplots(3,5,figsize=(8,8),subplot_kw={'xticks':(),'yticks':()})
    fig.suptitle('Extract Components')
    for ax,comp_kmeans,comp_pca,comp_nmf in zip(axes.T,kmeans.cluster_centers_,pca.components_,nmf.components_):
        ax[0].imshow(comp_kmeans.reshape(image_shape))
        ax[1].imshow(comp_pca.reshape(image_shape),cmap='viridis')
        ax[2].imshow(comp_nmf.reshape(image_shape))
    axes[0,0].set_ylabel('kmeans')
    axes[1,0].set_ylabel('pca')
    axes[2,0].set_ylabel('nmf')
    plt.show()
    

  • 相关阅读:
    STM32 CubeMX 学习:004-PWM
    MyBase 7.1 可用的 Markdown 配置表
    STM32 CubeMX 学习:003-定时器
    STM32 CubeMX 学习:002-外部中断的使用
    Kubernetes资源对象之RS
    Kubernetes资源对象之Deployment
    Kubernetes基础资源对象之service
    Kubernetes资源对象之RC
    Kubernetes基础资源对象之Pod
    libev
  • 原文地址:https://www.cnblogs.com/yangjing000/p/8290588.html
Copyright © 2011-2022 走看看