2016 4 9 pca簡單實現

2021-07-11 16:36:20 字數 1115 閱讀 4300

import numpy as np

import matplotlib

import matplotlib.pyplot as plt

#簡單假設資料

data = np.array( [ [1,1],[1,2],[2,2],[2,3],[3,3],[3,4] ] );

#備份原始資料

origindata = np.array( data);

#假設pca取一維

ndim = 1;

#按照每乙個變數求平均值

meanvals = np.mean(data,axis = 0)

#減去平均值

data = data - meanvals;

#求協防差矩陣,其中rowvar表示是否row代表變數

covmat = np.cov(data,rowvar = 0);

#求協防差矩陣的特徵值和特徵向量

eigvals , eigvects = np.linalg.eig(covmat);

#按照降序排列特徵值

eigvalind = np.argsort(-eigvals);

#取pca降維之後的數量

eigvalind = eigvalind[:ndim];

#降維之後的特徵向量們

redeigvects = eigvects[:,eigvalind];

#低維度的資料

lowddatamat = np.dot(data,redeigvects);

#重構資料

reconstructmat = np.dot(lowddatamat , redeigvects.transpose())+meanvals;

#繪圖fig = plt.figure()

ax = fig.add_subplot(111);

#原始資料

ax.scatter(origindata[:,0],origindata[:,1],marker = '^',s=90)

#重構資料

ax.scatter(reconstructmat[:,0],reconstructmat[:,1],marker = 'o',s = 50,c = 'red');

plt.show();

PCA檢測人臉的簡單示例 matlab實現

訓練 lx x x clear clc train path data trainingset phi zeros 64 64,20 for i 1 20 path strcat train path,num2str i bmp image imread path image imresize im...

PCA檢測人臉的簡單示例 matlab實現

pca檢測人臉的簡單示例,matlab r2009b上實現 訓練 訓練用的20副人臉 訓練 lx x x clear clc train path data trainingset phi zeros 64 64,20 for i 1 20 path strcat train path,num2st...

python 實現PCA變換

在機器學習中,指標不全面會無法保證模型的準確性,但指標太多又容易造成指標維度災難。主成分分析的主要思想 1 進行特徵降維變換,不能完全地表示原有的物件,能量總會有損失。2 希望找到一種能量最為集中的變換方法使得損失最小 主成分分析就是試圖在力保資料資訊丟失最小的原則下,對這種多變數的資料進行最佳綜合...