• 大小: 3.09MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-02
  • 语言: Python
  • 标签:

资源简介

使用的是python3版本,自己编写的,能够完美运行,只需要运行主程序就行,数据啥的都准备好了

资源截图

代码片段和文件信息


from __future__ import print_function  
  
from time import time  
import logging  
import matplotlib.pyplot as plt  
import cv2  
  
from numpy import *  
from sklearn.model_selection import train_test_split  
from sklearn.model_selection import GridSearchCV  
from sklearn.metrics import classification_report  
from sklearn.metrics import confusion_matrix  
from sklearn.decomposition import PCA  
from sklearn.svm import SVC


#获取人脸图的灰度图像数据,并且每一行数据代表一张图
def get_Image():  
    for i in range(141):  
        for j in range(111):  
            path = PICTURE_PATH + ‘s‘+str(i) + ‘/‘+ str(j) + “.pgm“  
            img_gray = cv2.imread(path0)  
            #img_gray = cv2.cvtColor(img cv2.COLOR_BGR2GRAY)  
            hw = img_gray.shape  
            img_col = img_gray.reshape(h*w)  
            all_data_set.append(img_col)  
            all_data_label.append(i)  
    return (hw)

#对原始数据进行PCA特征压缩,压缩数默认20;
def PCAdata(Xyn_components=20):
    X_train X_test y_train y_test = train_test_split(X y test_size=0.2)#采用5倍交叉验证法分类数据
    pca = PCA(n_components=n_components svd_solver=‘randomized‘ whiten=True).fit(X_train)    #whiten是一种数据预处理方式,会损失一些数据信息,但可获得更好的预测结果
    #eigenfaces = pca.components_.reshape((n_components h w))
    
    X_train_pca = pca.transform(X_train)      #得到训练集投影系数  
    X_test_pca = pca.transform(X_test)
    return(X_train_pcaX_test_pcay_train y_test)

#训练并预测数据
def train_test(X_trainY_trainX_testY_testCkergam=0.1):#C为惩罚因子参数,ker为核函数类型
    param_grid = {‘C‘: [C] ‘gamma‘: [gam] }
    clf = GridSearchCV(SVC(kernel=ker class_weight=‘balanced‘) param_grid)
    clf = clf.fit(X_train_pca Y_train)
    #print(‘训练所的模型参数如下:‘)  
    #print(clf.best_estimator_)

   # print(‘\n现在开始预测训练集....‘)  
 
    y_pred = clf.predict(X_test)  
   
    result = list(Y_test == y_pred)
    score = (result.count(True))/len(y_pred)
    
    return(score)

#数据变量的声明以及PCA压缩处理

PICTURE_PATH = ‘att_faces/‘
all_data_set = []  
all_data_label = []
hw = get_Image()
X = array(all_data_set)  
y = array(all_data_label)  
n_samplesn_features = X.shape  
n_classes = len(unique(y))  
target_names = []
X_train_pcaX_test_pca y_train y_test= PCAdata(Xy20)
#score =train_test(X_train_pcay_trainX_test_pcay_test1000ker=‘rbf‘gam=0.01)

#开始训练测试

print(‘下面开始进行不同核函数下的准确率描述......(默认C=1000,gamma=0.1)\n‘)
kernal =[‘rbf‘‘linear‘ ‘poly‘  ‘sigmoid‘ ]
for each in kernal:
    result = train_test(X_train_pcay_trainX_test_pcay_testC=1000ker=eachgam=0.01)
    print(‘核函数为%s时,准确率为%s:‘%(eachresult))
dataC=[]
datagama=[]
datascore =[]
for i in range(1200):
    dataC.append(i/20)
    datagama.append(1/100)

print(‘\n开始绘制参数C下的准确率曲线图(比较慢请稍等)......‘)
for C in dataC:
    score =train_test(X_train_pcay_trainX_test_pcay_testCker=‘rbf‘gam=0.01)

    #print(‘C=%d时,准确率为%d‘%(Cscore))
    datascore.append(score)
plt.title(‘Accuracy with paremeter C‘)
plt.xlabel(‘Paremeter

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      10318  1994-04-18 14:17  人脸识别VSM\att_faces\s1\1.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s1\10.pgm

     文件      10318  1994-04-18 14:17  人脸识别VSM\att_faces\s1\2.pgm

     文件      10318  1994-04-18 14:17  人脸识别VSM\att_faces\s1\3.pgm

     文件      10318  1994-04-18 14:17  人脸识别VSM\att_faces\s1\4.pgm

     文件      10318  1994-04-18 14:17  人脸识别VSM\att_faces\s1\5.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s1\6.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s1\7.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s1\8.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s1\9.pgm

     文件      10318  1994-04-18 14:18  人脸识别VSM\att_faces\s10\1.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s10\10.pgm

     文件      10318  1994-04-18 14:18  人脸识别VSM\att_faces\s10\2.pgm

     文件      10318  1994-04-18 14:18  人脸识别VSM\att_faces\s10\3.pgm

     文件      10318  1994-04-18 14:18  人脸识别VSM\att_faces\s10\4.pgm

     文件      10318  1994-04-18 14:18  人脸识别VSM\att_faces\s10\5.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s10\6.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s10\7.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s10\8.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s10\9.pgm

     文件      10318  1994-04-18 14:18  人脸识别VSM\att_faces\s11\1.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s11\10.pgm

     文件      10318  1994-04-18 14:18  人脸识别VSM\att_faces\s11\2.pgm

     文件      10318  1994-04-18 14:18  人脸识别VSM\att_faces\s11\3.pgm

     文件      10318  1994-04-18 14:18  人脸识别VSM\att_faces\s11\4.pgm

     文件      10318  1994-04-18 14:18  人脸识别VSM\att_faces\s11\5.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s11\6.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s11\7.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s11\8.pgm

     文件      10318  1994-04-18 14:07  人脸识别VSM\att_faces\s11\9.pgm

............此处省略416个文件信息

评论

共有 条评论