【问题标题】:How can I use skylearn module in python for face recognition using AT & T database(fetch_olivetti_faces data sets.)如何在 python 中使用 Skylearn 模块进行人脸识别,使用 AT&T 数据库(fetch_olivetti_faces 数据集。)
【发布时间】:2017-03-11 07:29:08
【问题描述】:

我想对使用 SVM 和 LDA 的人脸识别性能进行基准测试。你能告诉我如何实现它吗

【问题讨论】:

    标签: python-2.7


    【解决方案1】:

    我想 LDA 是指潜在狄利克雷分配,如果您是指线性判别分析,则可以简单地使用 sklearn.discriminant_analysis.LinearDiscriminantAnalysis 作为分类器并比较准确度或精度以及召回率等。

    在将主题表示提供给 SVM 之前,您应该使用潜在狄利克雷分配作为转换器。例如下面的代码就是这样做的(你当然可以使用管道和交叉验证,但这只是一个例子)。

    import numpy as np
    from sklearn.datasets import fetch_olivetti_faces
    from sklearn.decomposition import LatentDirichletAllocation
    from sklearn.linear_svm import LinearSVC
    
    # get the dataset
    faces = fetch_olivetti_faces()
    X = (faces.data*255).astype(int)
    y = faces.target
    
    # create a test set and a training set
    idx = np.arange(len(X))
    np.random.shuffle(idx)
    train = idx[:2*len(X)/3]
    test = idx[2*len(X)/3:]
    
    # create the models
    lda = LatentDirichletAllocation(n_topics=10)
    svm = LinearSVC(C=10)
    
    # evaluate everything
    lda.fit(X[train])
    T = lda.transform(X)
    print svm.fit(T[train], y[train]).score(T[test], y[test])
    

    LDA 并不是特别well suited for classification,因此已经开发了很多变体。我们开发了一种这样的分类监督变体,我们在今年的 ACM Multimedia 上进行了展示。您可以阅读我们的论文Fast Supervised LDA 并从http://ldapluplus.com/ 获取代码和文档。终于可以看到example of using Olivetti Faces with LDA++了。

    【讨论】:

      猜你喜欢
      • 2019-01-16
      • 2011-05-09
      • 2017-05-20
      • 1970-01-01
      • 2020-07-29
      • 2019-06-25
      • 2017-07-08
      • 2021-07-27
      • 2014-04-15
      相关资源
      最近更新 更多