✌ 案例实战:简易人脸识别模型
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的浮点数,则表示保留相应百分比的数据信息