-
大小: 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个文件信息
- 上一篇:me
tadata.txt - 下一篇:PCA+PSO-ELM.rar
评论
共有 条评论