1. 程式人生 > 其它 >PCA降維:簡易人臉識別模型 機器學習

PCA降維:簡易人臉識別模型 機器學習

技術標籤:機器學習AI找不到女朋友系列人臉識別人工智慧python機器學習java

文章目錄


案例實戰:簡易人臉識別模型

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的浮點數,則表示保留相應百分比的資料資訊