principle Component Analysis(PCA)算法思想+matlab/python实现

主成分分析(PCA)是一种数据降维技术,旨在保留方差最大的特征。算法包括数据中心化、求协方差矩阵、计算特征值与特征向量,然后通过映射矩阵实现降维。本文提供了PCA的matlab和python实现代码。
摘要由CSDN通过智能技术生成

简述

主成分分析是一种分析、简化数据集的技术,经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征。

主要思路是将n维的数据投影到k(n>k)维空间超平面(直线的高维推广)上面去,使得各个样本点到超平面的投影距离最小(欧式距离)且方差最大。

算法思想

Input:n维样本集
Output:降维后的样本集

1、将原始数据集中每个样本用向量表示为矩阵,再对矩阵进行中心化处理
2、求协方差矩阵
3、求特征值和特征向量
4、求出的特征向量按特征值大小组合形成一个映射矩阵,取前n行或n列,可以用cRate用来检测
5、用映射矩阵对样本集进行映射,得到降维后的样本集

matlab代码实现

PCA函数

function [nMatrix,meanValue] = PCA(X,cRate)
% nMatrix为降维后的新矩阵,meanValue为X每列的均值,用于还原X,cRate为贡献率

% 中心化样本矩阵
meanValue = ones(size(X,1),1)*mean(X);  %每列均值构成的矩阵
X = X- meanValue; % 减去均值,ones()为生成一个行数与x一致的列向量
Cov = (X'*X)/(size(X,1)-1);   % 协方差矩阵
[Vector,Value]= eig(Cov);  % 计算特征向量和特征值
[B,order] = sort(diag(-Value));  % order记录下排序后的索引值,B为排序后得到的列向量
Vector = Vector(:,order);      %将特征向量降序排列
Val = diag(Value);   % 构成一个列向量
sumValue = sum(Val);  %求出特征值之和

for i=1:length(Val)
    Rat = sum(1:i,1)/sumValue;  %选取其中n个特征向量
    if Rat < cRate
        cols = i;
        break;
    end
end

Trans = Vector(:,1:cols);
nMatrix = X*Trans;
end

main主函数

%  将降维后得到的新矩阵newX恢复:公式为X=nMatrix*T'+meanValue
clc;
close all;

A = load('testSet.txt');
[nMat,mVal] = PCA(A,0.95)  % 

python代码实现

from numpy import *
import matplotlib.pyplot as plt

def loadDataSet(fileName, delim=&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值