美文网首页
简单的人脸识别

简单的人脸识别

作者: 最帅的是你 | 来源:发表于2018-12-02 15:49 被阅读0次

    导包

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    %matplotlib inline
    from pandas import DataFrame
    from sklearn.decomposition import PCA
    from sklearn.svm import SVC
    from sklearn.model_selection import train_test_split
    from sklearn.model_selection import GridSearchCV
    from sklearn.datasets import fetch_lfw_people
    
    faces = fetch_lfw_people(resize=1,min_faces_per_person=70)
    
    # 查看一下数据
    images = faces.images
    plt.imshow(images[100],cmap='gray')
    display(images.shape,images[100].shape)
    
    #获取数据
    data = faces.data
    target = faces.target
    target_name = faces.target_names
    
    # 切分数据
    X_train ,X_test,y_train,y_test = train_test_split(data,target,test_size=88)
    
    # 使用PCA降维
    pca = PCA(100,whiten=True)
    pca.fit(X_train)
    # 转化
    X_train_pca = pca.transform(X_train)
    
    使用GridSearchCV找到最佳的支持向量机方法
    svc = SVC()
    param_grid = {
        'C':[0.01,0.1,1,2,10],
        'gamma':[0.001,0.01,0.1,0.5,1]
    }
    gv = GridSearchCV(svc,param_grid)
    gv.fit(X_train_pca,y_train)
    
    # 最佳参数
    gv.best_params_
    # 最好的得分
    gv.best_score_
    # 最佳的模型
    estimator = gv.best_estimator_
    
    # 对预测数据也进行降维
    X_test_pca = pca.transform(X_test)
    # 最佳模型进行预测
    y_ = estimator.predict(X_test_pca)
    
    预测得分
    estimator.score(X_test_pca,y_test)
    > 0.8181818181818182
    
    图形可视化
    # 画图
    #  88 / 40
    # 8行5列
    plt.figure(figsize=(8*2,5*6))
    for i in range(40):
        axes = plt.subplot(8,5,i+1)
        axes.imshow(X_test[i*2].reshape((125,94)),cmap='gray')
        axes.set_title('True:%s\nPredict:%s' % (target_name[y_test[i*2]].split()[-1],target_name[y_[i*2]].split()[-1]))
        axes.axis('off')
    
    1.png 2.png 3.png

    相关文章

      网友评论

          本文标题:简单的人脸识别

          本文链接:https://www.haomeiwen.com/subject/dmbjcqtx.html