PCA降維:簡易人臉識別模型 機器學習
阿新 • • 發佈:2021-02-12
技術標籤:機器學習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的浮點數,則表示保留相應百分比的資料資訊