非負矩陣分解(nmf)
非負矩陣分解是在矩陣中所有元素均為非負數約束條件之下的矩陣分解方法。
基本思想:給定乙個非負矩陣v,nmf能夠找到乙個非負矩陣w和乙個非負矩陣h,使得矩陣w和h的乘積近似等於矩陣v中的值。
非負矩陣分解(nmf)
import matplotlib.pyplot as plt
from sklearn import decomposition
#載入pca演算法包
from sklearn.datasets import fetch_olivetti_faces
#載入人臉資料集
from numpy.random import randomstate
#載入randomstate用於建立隨機種子
n_row,n_col =2,
3#設定影象展示時的排列情況,2行三列
n_components = n_row = n_col
#設定提取的特徵的數目
image_shape =(64
,64)#設定人臉資料的大小
dataset = fetch_olivetti_faces(shuffle=
true
,random_state=randomstate(0)
)faces = dataset.data#載入資料,並打亂順序
defplot_gallery
(title,images,n_col=n_col,n_row=n_row)
: plt.figure(figsize=(2
.* n_col,
2.26
* n_row)
)#建立,並指定大小
plt.suptitle(title,size=16)
#設定標題及字型大小大小
for i,comp in
enumerate
(images)
: plt.subplot(n_row,n_col,i+1)
#選擇畫製的子圖
vmax =
max(comp.
max(),
-comp.
min())
plt.imshow(comp.reshape(image_shape)
,cmap=plt.cm.gray,interpolation=
'nearest'
,vmin=
-vmax,vmax=vmax)
#對數值歸一化,並以灰度圖形式顯示
plt.xticks(()
) plt.yticks(()
)#去除子圖的座標軸標籤
plt.subplots_adjust(
0.01
,0.05
,0.99
,0.93
,0.04,0
.)estimators=[(
'eigenfaces - pca using randomized svd'
,decomposition.pca(n_components=
6,whiten=
true))
,('non-negative components - nmf'
,decomposition.nmf(n_components=
6,init=
'nndsvda'
,tol=5e-
3))]
#nmf和pca例項,將它們放在乙個列表中
for name,estimators in estimators:
#分別呼叫pca和nmf
estimators.fit(faces)
#呼叫pca或nmf提取特徵
components_=estimators.components_#獲取提取特徵
plot_gallery(name,components_[
:n_components]
)#按照固定格式進行排列
plt.show(
)#視覺化
人臉情感特徵提取(二)
人臉情感特徵提取 一 知識背景 如果以下內容對你有所幫助,可以點讚關注一下表示支援哦!import cv2 import dlib 與人臉檢測相同,使用dlib自帶的frontal face detector作為人臉檢測器 detector dlib.get frontal face detecto...
LBP演算法(人臉識別特徵提取)
lbp local binary patterns,區域性二值模式 是提取區域性特徵作為判別依據的。lbp方法顯著的優點是對光照不敏感,但是依然沒有解決姿態和表情的問題。不過相比於特徵臉方法,lbp的識別率已經有了很大的提公升。在 1 的文章裡,有些人臉庫的識別率已經達到了98 1 lbp特徵提取 ...
特徵工程 特徵提取
特徵提取 將任意資料 如文字或影象 轉換為可用於機器學習的數字特徵 注 特徵值化是為了計算機更好的去理解資料 字典特徵提取 作用 對字典資料進行特徵值化 dictvectorizer.get feature names 返回類別名稱 from sklearn.feature extraction i...