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 希望找到一種能量最為集中的變換方法使得損失最小 主成分分析就是試圖在力保資料資訊丟失最小的原則下,對這種多變數的資料進行最佳綜合...