Python作人脸数据分解(sklearn例子)

来源:互联网 发布:看不到etc linux 编辑:程序博客网 时间:2024/06/04 19:14

http://scikit-learn.org/stable/auto_examples/decomposition/plot_faces_decomposition.html#example-decomposition-plot-faces-decomposition-py


Faces dataset decompositions

This example applies to The Olivetti faces dataset different unsupervised matrix decomposition (dimension reduction) methods from the module sklearn.decomposition (see the documentation chapter Decomposing signals in components (matrix factorization problems)) .

  • ../../_images/plot_faces_decomposition_9.png 
  • ../../_images/plot_faces_decomposition_2.png 
  • ../../_images/plot_faces_decomposition_8.png
  • ../../_images/plot_faces_decomposition_1.png 
  • ../../_images/plot_faces_decomposition_5.png
  • ../../_images/plot_faces_decomposition_3.png 
  • ../../_images/plot_faces_decomposition_6.png
  • ../../_images/plot_faces_decomposition_4.png 
  • ../../_images/plot_faces_decomposition_7.png

Script output:

Dataset consists of 400 facesExtracting the top 6 Eigenfaces - RandomizedPCA...done in 0.125sExtracting the top 6 Non-negative components - NMF...done in 0.835sExtracting the top 6 Independent components - FastICA...done in 1.046sExtracting the top 6 Sparse comp. - MiniBatchSparsePCA...done in 0.880sExtracting the top 6 MiniBatchDictionaryLearning...done in 1.148sExtracting the top 6 Cluster centers - MiniBatchKMeans...done in 0.241sExtracting the top 6 Factor Analysis components - FA...done in 2.519s

Total running time of the example: 8.29 seconds


Python source code: plot_faces_decomposition.py

print(__doc__)# Authors: Vlad Niculae, Alexandre Gramfort# License: BSD 3 clauseimport loggingfrom time import timefrom numpy.random import RandomStateimport pylab as plfrom sklearn.datasets import fetch_olivetti_facesfrom sklearn.cluster import MiniBatchKMeansfrom sklearn import decomposition# Display progress logs on stdoutlogging.basicConfig(level=logging.INFO,                    format='%(asctime)s %(levelname)s %(message)s')n_row, n_col = 2, 3n_components = n_row * n_colimage_shape = (64, 64)rng = RandomState(0)################################################################################ Load faces datadataset = fetch_olivetti_faces(shuffle=True, random_state=rng)faces = dataset.datan_samples, n_features = faces.shape# global centeringfaces_centered = faces - faces.mean(axis=0)# local centeringfaces_centered -= faces_centered.mean(axis=1).reshape(n_samples, -1)print("Dataset consists of %d faces" % n_samples)###############################################################################def plot_gallery(title, images, n_col=n_col, n_row=n_row):    pl.figure(figsize=(2. * n_col, 2.26 * n_row))    pl.suptitle(title, size=16)    for i, comp in enumerate(images):        pl.subplot(n_row, n_col, i + 1)        vmax = max(comp.max(), -comp.min())        pl.imshow(comp.reshape(image_shape), cmap=pl.cm.gray,                  interpolation='nearest',                  vmin=-vmax, vmax=vmax)        pl.xticks(())        pl.yticks(())    pl.subplots_adjust(0.01, 0.05, 0.99, 0.93, 0.04, 0.)################################################################################ List of the different estimators, whether to center and transpose the# problem, and whether the transformer uses the clustering API.estimators = [    ('Eigenfaces - RandomizedPCA',     decomposition.RandomizedPCA(n_components=n_components, whiten=True),     True),    ('Non-negative components - NMF',     decomposition.NMF(n_components=n_components, init='nndsvda', beta=5.0,                       tol=5e-3, sparseness='components'),     False),    ('Independent components - FastICA',     decomposition.FastICA(n_components=n_components, whiten=True),     True),    ('Sparse comp. - MiniBatchSparsePCA',     decomposition.MiniBatchSparsePCA(n_components=n_components, alpha=0.8,                                      n_iter=100, batch_size=3,                                      random_state=rng),     True),    ('MiniBatchDictionaryLearning',        decomposition.MiniBatchDictionaryLearning(n_components=15, alpha=0.1,                                                  n_iter=50, batch_size=3,                                                  random_state=rng),     True),    ('Cluster centers - MiniBatchKMeans',        MiniBatchKMeans(n_clusters=n_components, tol=1e-3, batch_size=20,                        max_iter=50, random_state=rng),     True),    ('Factor Analysis components - FA',     decomposition.FactorAnalysis(n_components=n_components, max_iter=2),     True),]################################################################################ Plot a sample of the input dataplot_gallery("First centered Olivetti faces", faces_centered[:n_components])################################################################################ Do the estimation and plot itfor name, estimator, center in estimators:    print("Extracting the top %d %s..." % (n_components, name))    t0 = time()    data = faces    if center:        data = faces_centered    estimator.fit(data)    train_time = (time() - t0)    print("done in %0.3fs" % train_time)    if hasattr(estimator, 'cluster_centers_'):        components_ = estimator.cluster_centers_    else:        components_ = estimator.components_    if hasattr(estimator, 'noise_variance_'):        plot_gallery("Pixelwise variance",                     estimator.noise_variance_.reshape(1, -1), n_col=1,                     n_row=1)    plot_gallery('%s - Train time %.1fs' % (name, train_time),                 components_[:n_components])pl.show()


0 0
原创粉丝点击