PCA降维:简易人脸识别模型 机器学习


✌ 案例实战:简易人脸识别模型

1、✌ 导库

# 文件目录相关库
import os
# 图片操作库
from PIL import Image
# 导入近邻模型
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 导入降维函数
from sklearn.decomposition import PCA

2、✌ 获取图片数据

from PIL import Image
img0=Image.open('D:\\code\\olivettifaces\\'+names[0])
img0.show()

Image.open(‘file’):获取图片

3、✌ 获取图片像素矩阵

img0=img0.convert('L')
img0.resize((32,32))
arr=np.array(img0)
arr.ravel()
x=[]
y=[]
for i in names:
	# 获取图片
    img0=Image.open('D:\\code\\olivettifaces\\'+i)
    # 将图片灰度处理
    img0=img0.convert('L')
    # 将尺寸调整为(32,32)像素
    img0=img0.resize((32,32))
    arr=np.array(img0)
    # 获取特征矩阵
    x.append(arr.ravel())
    # 获取标签
    y.append(int(i.split('_')[0]))

img.convert(‘L’):将图片灰度处理
img.resize( (32,32) ):调整图片尺寸大小

4、✌ 分割数据集

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=0)

5、✌ 未降维数据

from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 近邻模型
clf=KNeighborsClassifier()
clf.fit(x_train,y_train)
accuracy_score(y_test,clf.predict(x_test))

在这里插入图片描述

6、✌ PCA降维数据

from sklearn.decomposition import PCA
# 进行PCA降维,抽取50列特征
pca=PCA(n_components=50)
# 拟合数据
pca.fit(x_train)
# 转化数据集
x_train_pca=pca.transform(x_train)
x_test_pca=pca.transform(x_test)
clf=KNeighborsClassifier()
clf.fit(x_train_pca,y_train)
accuracy_score(y_test,clf.predict(x_test_pca))

在这里插入图片描述
PCA(n_components=50):
n_components可以取整数,意思是保留相应数目特征
如果为0~1的浮点数,则表示保留相应百分比的数据信息

猜你喜欢

转载自blog.csdn.net/m0_47256162/article/details/113791502