PCA技术在数据挖掘方面的应用(含matlab代码)

合集下载

PCA分析及应用

PCA分析及应用

PCA分析及应用PCA的基本原理是将原始数据投影到一个新的坐标系中,使得新坐标系的第一主成分(即数据的最大方差方向)上的投影具有最大的方差。

通过这种方式,PCA将原始数据的维度减少到新坐标系中的几个主成分上。

具体步骤如下:1.数据标准化:对原始数据进行标准化处理,将每个特征的均值变为0,方差变为1,使得特征之间具有相同的尺度。

2.计算协方差矩阵:计算标准化后的数据集的协方差矩阵。

3.计算特征值和特征向量:对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。

4.选择主成分:选择特征值最大的k个特征向量作为主成分,k为希望降维到的维度。

5.生成新的数据集:将原始数据集投影到选取的k个特征向量上,生成降维后的数据集。

PCA的应用主要包括以下几个方面:1.数据可视化:通过将高维数据集降维到二维或三维空间中,可以将数据可视化展示。

在二维空间中,我们可以绘制散点图、热力图等形式,更好地观察数据的分布情况。

2.数据预处理:在很多机器学习算法中,高维数据集会导致维度灾难问题,降低算法的效率。

通过PCA可以将数据降低到合适的维度,提高算法的运行速度。

3.特征选择:PCA可以帮助我们选择最重要的特征,将无关的或冗余的特征消除,提高模型的性能和泛化能力。

4.噪声去除:通过PCA可以检测数据中的噪声点,并将其排除在降维后的数据集之外。

5.数据压缩:通过降维,可以将数据集的维度减少到比原始数据集更小的维度,节省存储空间。

值得注意的是,PCA在应用中也存在一些限制和注意事项。

首先,PCA假设数据呈正态分布,对于非正态分布的数据可能会导致结果不准确。

其次,PCA以最大方差的方式进行降维,可能会忽略一些重要的信息。

此外,PCA是一种线性方法,对于非线性的数据集可能不适用。

综上所述,PCA是一种常用的降维技术,广泛应用于数据可视化、数据预处理、特征选择、噪声去除和数据压缩等方面。

在实际应用中,我们需要根据具体问题和数据特点选择合适的降维方法,并结合其他技术进行综合分析。

PCA适合哪些场景

PCA适合哪些场景

PCA适合哪些场景
PCA(主成分分析)适合以下场景:
1.数据压缩:PCA可以将高维数据映射到低维空间,从而实现数
据的压缩,减少存储空间和计算复杂度。

2.数据可视化:PCA可以将高维数据转换为二维或三维空间,使
得数据可以可视化展示,便于人类观察和理解。

3.特征提取:PCA可以通过降维的方式提取出最具代表性的特
征,去除冗余。

4.处理大型数据集:对于数据量较大、维度较高的数据集,PCA
能够提供有效的降维和特征提取方法,使得数据更易于处理和分析。

5.处理非线性关系数据:PCA假设数据之间存在线性关系,如果
数据之间存在非线性关系,PCA可能无法完全揭示数据的内在结构。

6.需要解释性强:PCA将数据投影到低维空间后,得到的特征向
量通常具有直观的含义,使得结果更容易解释。

7.处理异常值和噪声:PCA对异常值和噪声的鲁棒性较强,能够
有效地去除数据中的噪声和异常值。

需要注意的是,PCA并不适用于所有场景,选择合适的数据分析方法需要根据具体的数据和任务需求来决定。

pca的原理及应用

pca的原理及应用

PCA的原理及应用1. 什么是PCA主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维技术,用于将高维数据转换为低维数据,同时保留数据的主要信息。

PCA通过线性变换将原始特征空间映射到新的特征空间,新的特征空间中的维度是原始空间的子空间,并且这些新特征是原始特征的线性组合。

2. PCA的原理PCA的主要目标是找到可以最好地保留数据中信息的正交投影。

以下是PCA的具体步骤:1.数据预处理:对原始数据进行标准化处理,使得每个特征具有相同的重要性。

2.计算协方差矩阵:计算数据的协方差矩阵,该矩阵描述了不同特征之间的相关性。

3.计算特征值和特征向量:计算协方差矩阵的特征值和特征向量,特征向量构成了新的特征空间,特征值表示了新特征空间的重要性。

4.选择主成分:根据特征值的大小,选择最重要的特征向量作为主成分。

5.数据转换:通过将原始数据投影到主成分上,将高维数据转换为低维数据。

3. PCA的应用3.1 数据可视化PCA可以用于将高维数据映射到二维或三维空间,从而进行数据可视化。

通过可视化,我们可以更好地理解数据之间的关系,发现潜在的模式或异常。

3.2 特征选择在机器学习中,特征选择是一个重要的步骤。

通过PCA,我们可以选择保留主要信息的主成分,从而减少特征的数量,提高模型的性能和计算效率。

3.3 噪声过滤在实际应用中,数据通常包含各种噪声。

通过PCA,我们可以把噪声所占的成分剔除掉,保留主要的信号部分,从而提高数据的质量。

3.4 维度约简高维数据会带来计算和存储的困难,通过PCA,我们可以将高维数据转换为低维数据,从而减少计算和存储的开销。

3.5 数据压缩通过PCA,我们可以将原始数据通过投影到主成分上进行压缩,从而减少数据的存储空间,同时保留数据的主要信息。

4. 总结PCA是一种常用的数据降维技术,通过线性变换将高维数据转换为低维数据,同时保留数据的主要信息。

基于主成分分析(PCA)的人脸识别技术

基于主成分分析(PCA)的人脸识别技术

基于主成分分析(PCA)的⼈脸识别技术本科期间做的⼀个课程设计,觉得⽐较好玩,现将之记录下来,实验所⽤。

1、实验⽬的(1)学习主成分分析(PCA)的基础知识;(2)了解PCA在⼈脸识别与重建⽅⾯的应⽤;(3)认识数据降维操作在数据处理中的重要作⽤;(4)学习使⽤MATLAB软件实现PCA算法,进⾏⼈脸识别,加深其在数字图像处理中解决该类问题的应⽤流程。

2、实验简介(背景及理论分析)近年来,由于恐怖分⼦的破坏活动发⽣越发频繁,包括⼈脸识别在内的⽣物特征识别再度成为⼈们关注的热点,各国均纷纷增加了对该领域研究的投⼊。

同其他⽣物特征识别技术,如指纹识别、语⾳识别、虹膜识别、DNA识别等相⽐,⼈脸识别具有被动、友好、⽅便的特点。

该技术在公众场合监控、门禁系统、基于⽬击线索的⼈脸重构、嫌疑犯照⽚的识别匹配等领域均有⼴泛应⽤。

⼈脸识别技术是基于⼈的脸部特征,对输⼊的⼈脸图像或者视频流,⾸先判断其是否存在⼈脸。

如果存在⼈脸,则进⼀步的给出每个脸的位置、⼤⼩和各个主要⾯部器官的位置信息。

其次并依据这些信息,进⼀步提取每个⼈脸中所蕴涵的⾝份特征,并将其与已知的⼈脸进⾏对⽐,从⽽识别每个⼈脸的⾝份。

⼴义的⼈脸识别实际包括构建⼈脸识别系统的⼀系列相关技术,包括⼈脸图像采集、⼈脸定位、⼈脸识别预处理、⾝份确认以及⾝份查找等;⽽狭义的⼈脸识别特指通过⼈脸进⾏⾝份确认或者⾝份查找的技术或系统。

我们在处理有关数字图像处理⽅⾯的问题时,⽐如经常⽤到的图像查询问题:在⼀个⼏万或者⼏百万甚⾄更⼤的数据库中查询⼀幅相近的图像。

其中主成分分析(PCA)是⼀种⽤于数据降维的⽅法,其⽬标是将⾼维数据投影到较低维空间。

PCA形成了K-L变换的基础,主要⽤于数据的紧凑表⽰。

在数据挖掘的应⽤中,它主要应⽤于简化⼤维数的数据集合,减少特征空间维数,可以⽤较⼩的存储代价和计算复杂度获得较⾼的准确性。

PCA法降维分类原理如下图所⽰:如上图所⽰,其中五⾓星表⽰⼀类集合,⼩圆圈表⽰另⼀类集合。

数据分析知识:数据挖掘中的数据降维技术

数据分析知识:数据挖掘中的数据降维技术

数据分析知识:数据挖掘中的数据降维技术数据挖掘是一门使用大型数据集合来发现信息、发现规律、发现关联和支持决策等方法的学科。

数据挖掘的目标是通过提取数据中的有意义信息来帮助人类做出更加合理、更加高效的决策。

因此,数据降维技术是数据挖掘的重要组成部分。

本文将为你介绍数据挖掘中常用的数据降维技术,以及数据降维技术的应用场景。

一、数据降维技术的概念数据降维是指将高维度的数据转换为低维度的数据的过程,降低数据集的复杂度。

通过这样的方法,我们可以在保留数据中主要特征的同时,减少特征数量,提高模型的效率和可解释性,从而提高数据挖掘的性能。

降维技术分为特征选择和特征提取两类。

1.特征选择特征选择通过选择部分的特征子集,减少数据集的特征数量,从而提高模型的效率和可解释性。

常用的特征选择方法有Wrapper、Filter、Embedded等。

其中,Wrapper方法是基于计算式或距离度量来评估特征重要性的方法,缺点是计算复杂度高,但可以提高模型的性能;Filter方法是基于特征之间相关性、互信息等来评估特征重要性的方法,缺点是可能保留无关或冗余的特征;Embedded方法是在学习模型中直接进行特征选择的方法,缺点是可能过度拟合。

2.特征提取特征提取是将高维度的数据转换为低维度的数据的过程,其中,数据的主要特征是通过线性变换或非线性变换提取出来的。

常用的特征提取方法有主成分分析(PCA)、因子分析、独立成分分析(ICA)等。

其中,PCA是最常用的一种降维方法,通过线性组合将原始特征映射到新的低维度特征空间,使得新空间中的特征具有最高的方差。

二、数据降维技术的应用场景数据降维技术在数据挖掘中有广泛的应用。

以下是一些常见的应用场景:1.图像处理在图像处理中,由于图像数据量巨大,传统方法难以直接处理这些数据。

因此,降维的方法得到了广泛的应用。

例如,可以将图像数据集降低到一个低维度空间,以此提高处理效率和准确性。

2.机器学习在机器学习中,如果特征数量太多,会导致计算复杂度变高,并且易于过拟合。

使用Matlab进行特征选择与降维的方法

使用Matlab进行特征选择与降维的方法

使用Matlab进行特征选择与降维的方法引言在许多实际应用中,数据集往往具有大量特征,而这些特征之间可能存在冗余或很弱的相关性。

这不仅会导致计算负担增加,还可能导致模型过拟合,降低模型的泛化能力。

因此,特征选择与降维成为了解决这一问题的重要手段。

本文将介绍如何使用Matlab进行特征选择与降维的方法。

一、特征选择方法特征选择是从原始特征集中选择出最有用的特征,以降低维度,并去除冗余与噪声。

常用的特征选择方法有过滤式、包裹式和嵌入式。

过滤式方法通过对特征进行评估和排名,然后选择得分较高的特征。

常用的评估指标有信息增益、方差、互信息等。

在Matlab中,可以使用函数`rankfeatures`来实现特征排序和选择。

包裹式方法将特征选择问题转化为子集搜索问题,通过对每个特征子集进行验证来评估特征的质量。

常用的方法有递归特征消除、遗传算法等。

Matlab中提供了函数`sequentialfs`和`ga`用于实现包裹式特征选择。

嵌入式方法将特征选择融入到模型训练中,通过优化模型的目标函数来选择特征。

常用的方法有LASSO回归、岭回归等。

在Matlab中,可以使用`lasso`函数和`ridge`函数来实现嵌入式特征选择。

二、特征降维方法特征降维是将原始数据从高维空间映射到低维空间,以减少特征的数量和复杂性,并保留原始数据的主要结构和信息。

主要的特征降维方法有主成分分析(PCA)、线性判别分析(LDA)等。

PCA是一种无监督的线性降维方法,通过线性变换将数据投影到新的特征空间,使得投影后的特征具有最大的方差。

在Matlab中,可以使用`pca`函数来进行PCA降维。

LDA是一种有监督的线性降维方法,它考虑类别信息,并试图最大化类内距离和最小化类间距离。

在Matlab中,可以使用`classify`函数进行LDA降维。

除了PCA和LDA,还有很多其他的降维方法,如多维缩放(MDS)、局部线性嵌入(LLE)等。

matlab自带函数pca的用法

matlab⾃带函数pca的⽤法⽤于学习记录:matlab函数的pca函数的输⼊参数除了数据集X还有10个数据集X(每⾏为⼀个样本,⾏数为样本数)- coeff = pca(X)- coeff = pca(X,Name,Value)- [coeff,score,latent] = pca(___)- [coeff,score,latent,tsquared] = pca(___)- [coeff,score,latent,tsquared,explained,mu] = pca(___)i.eInput Argument 0X :--数据集假设n个样本, 每个样本p维,则 X是n-by-p的matrixInput Argument 1'Algorithm' — Principal component algorithm'svd' (default) | 'eig' | 'als'解释:PCA 涉及到求协⽅差矩阵的特征向量, 在matlab 有3中算法默认 :SVD,eig (Eigenvalue decomposition )算法, 此算法当n(number of examples) > p (features) 时,速度快于SVD,但是计算的结果没有SVD精确als( Alternating least squares )算法,此算法为了处理数据集X中有少许缺失数据时的情况(i.e 0), 但是对于X为稀疏数据集(缺失数据过多)时,不好⽤Input Argument 2'Centered' — Indicator for centering columnstrue (default) | false解释:选择是否对数据进⾏中⼼化, 也是数据的特征是否进⾏零均值化(i.e.按列减去均值, 为了得到covariancematrix), 如果选择了true, 则可⽤score*coeff'恢复中⼼化后的X, 若选择了false,则可⽤score*coeff'恢复原始的X默认:true(中⼼化)Input Argument 3'Economy' — Indicator for economy size outputtrue (default) | false解释: 有时候输出的coeff(映射矩阵p-by-p)过⼤, ⽽且是没有必要的(因为我们要降维),所以可以只输出coeff(以及score,latent)的前d列,d是数据集的⾃由度,数据集没NAN的时候d=n-1; 具体的解释见matlab.总之如果将看见完整的PCA结果,可以设置为false.默认:true ,(默认ture以后对于初次使⽤matlab这个函数的⼈⾮常迷惑).Input Argument 4'NumComponents' — Number of components requestednumber of variables (default) | scalar integer解释:输出指定的components 也就是更为灵活的Economy,但是经过试验发现指定成分数仅在⼩于d(⾃由度)时有效,⼤于d时⽆效;默认: number of variables ( i.e p,特征数⽬)Input Argument 5'Rows' — Action to take for NaN values'complete' (default) | 'pairwise' | 'all'解释: 此选项是为了智能处理数据集X中含有NAN的情况,complete: 计算之前.移除X中含有NAN的⾏(i.e 样本),计算完成后,含有NAN的⾏被重新插⼊到score and tsquared相应的位置中(coeff呢?)pairwise : ⾸先这个选项必须配合 'Argorithm'中 'eig'进⾏使⽤.如果没有指定'eig'(默认svd),当指定pairwise时,则会⾃动切换为eig; 指定为svd,则会发送warning message,然后⾃动切换为eig;若指定为als, 则会发送warning message然后忽略 'Rows'此选项.成功使⽤此选项时,若计算协⽅差(i,j)处值时遇到NAN,则使⽤X中第i或j列中不含NAN的⾏此处来计算的协⽅差值.all : 当确定X中⽆缺失数据,使⽤'all',则pca会使⽤X中所有的数据,当遇到NAN时则会⾃动终⽌.默认:completeInput Argument 6'Weights' — Observation weightsones (default) | row vector解释: 基于observations(i.e 样本)的权重pca,有需求的可以⾃⼰查查Input Argument 7'VariableWeights' — Variable weightsrow vector | 'variance'解释:基于variables(i.e.features)的权重pca,有需求的⾃⼰查默认: ⽆默认值, 也就是默认不使⽤此选项Input Argument 8'Coeff0' — Initial value for coefficientsmatrix of random values (default) | p-by-k matrix解释: Initial value for the coefficient matrix coeff, 不是太看的懂,但是要配合'Algorithm'中的'als'使⽤默认: p-by-randomInput Argument 9'Score0' — Initial value for scoresmatrix of random values (default) | k-by-m matrix解释: Initial value for scores matri score.不是太看的懂,但是要配合'Algorithm'中的 'als'使⽤默认 : n-by-randomInput Argument 10'Options' — Options for iterationsstructure(此⽤法是个结构体)解释: ⽤于迭代的选项,仅配合'Algorithm'中的'als'使⽤. 因为'als'是使⽤迭代的⽅法进⾏计算的对这个不感兴趣, 有兴趣的可以去help⼀下附上help中的使⽤⽅法 opt = statset('pca'); opt.MaxIter = 2000; coeff =pca(X,'Options',opt); Output Argument 1coeff : 主成分系数应该就是协⽅差矩阵的特征向量矩阵(也就是映射矩阵).完整输出的情况下是⼀个p-by-p 的matrix.每⼀列都是⼀个特征向量.按对应的特征值的⼤⼩,从⼤到⼩进⾏排列.Output Argument 2score: 进⾏旋转(也就是利⽤映射矩阵coeff进⾏)后的结果i.e. score = X * coeff. n-by-p matrix 这⾥要注意:如果你使⽤pca时使⽤的是'Centered'设置'false', 拿X *coeff 和score对⽐的时候, 记得把X中⼼化后再乘以coeff,之后再和score对⽐....; 同样如果pca使⽤的是默认值'true',恢复的X = score * coeff' (注意转置)是中⼼化后的数据Output Argument 3latent: 主成分⽅差也就是各特征向量对应的特征值,从⼤到⼩进⾏排列Output Argument 4tsquared :层次不够⽆法解释......Output Argument 5explained : 每⼀个主成分所贡献的⽐例,可以更直观的选择所需要降维的维数了,不⽤再⽤特征值去求了Output Argument 6mu: X 按列的均值,当前仅当 'Centered'置于'true'(默认值)时才会返回此变量。

pca-lstm的matlab代码

PCA-LSTM在Matlab中的代码实现在机器学习和深度学习领域,PCA-LSTM是一种常用的模型,它结合了主成分分析(Principal Component Analysis,PCA)和长短期记忆网络(Long Short-Term Memory,LSTM)。

本文将从简单介绍PCA-LSTM的原理和应用,然后深入探讨在Matlab中如何实现PCA-LSTM的代码。

1. PCA-LSTM简介PCA-LSTM是一种结合了PCA和LSTM的深度学习模型。

在传统的LSTM模型中,输入数据维度较高时容易受到维度灾难的影响,导致模型性能下降。

而PCA可以通过降维的方法减少输入数据的维度,从而提高模型的性能和准确性。

2. PCA-LSTM的原理和应用PCA-LSTM的原理是将输入数据先经过PCA进行降维处理,然后再输入到LSTM网络中进行训练和预测。

这样可以在保留数据关键信息的减少输入数据的维度,提高模型的效率和准确性。

在实际应用中,PCA-LSTM常用于时间序列数据的分析和预测,比如股票价格预测、气象数据分析等领域。

3. 实现PCA-LSTM的Matlab代码在Matlab中实现PCA-LSTM的代码需要以下步骤:- 使用Matlab中的PCA函数对输入数据进行降维处理,得到降维后的数据。

- 利用Matlab中的LSTM网络函数搭建PCA-LSTM模型,输入经过PCA处理后的数据进行训练和预测。

- 根据实际需求对模型进行调参优化,以达到最佳的性能和准确性。

4. 个人观点和理解对于PCA-LSTM模型,我个人认为它在处理高维度数据时具有很大的优势,可以有效提高模型的效率和性能。

在实际应用中,结合了PCA 和LSTM的模型能够更好地挖掘数据背后的特征和规律,从而实现更准确的预测和分析。

总结回顾通过本文的介绍,我们了解了PCA-LSTM模型的原理和应用,并深入探讨了在Matlab中如何实现PCA-LSTM的代码。

PCA的使用说明

PCA的使用说明一、PCA原理:PCA的核心思想是将高维数据转换为低维空间,同时保留原始数据的主要特征。

以下是PCA的基本步骤:1.去除平均值:对原始数据进行去均值操作,以使数据的均值为零。

2.计算协方差矩阵:计算去均值后的数据的协方差矩阵。

3.计算特征向量和特征值:对协方差矩阵进行特征值分解,获得特征向量和特征值。

4.选择主成分:选择特征值较大的前k个特征向量作为主成分。

5.数据投影:将原始数据投影到选取的主成分上,得到降维后的数据。

通过降维,PCA可以减少数据的维度,同时保留大部分信息。

降维后的数据可以更容易地可视化和分析,也有助于提高计算效率和降低存储开销。

二、PCA的应用领域:1.数据可视化:PCA可以将高维数据降低到二维或三维空间,从而可以进行更直观的数据可视化和分析。

例如,在生物学中,可以使用PCA将基因表达数据降维,以便观察和理解基因之间的相互作用。

2.特征提取:PCA可以用于数据集的特征提取,将多个相关特征转化为更少个数但仍保持相关性的新特征。

这在机器学习中非常有用,可以减少特征数量,提高模型的训练效率和准确性。

3.噪声过滤:PCA可以用于从数据中滤除噪声。

通过选择主成分,PCA可以提取高方差的信号,同时滤除低方差的噪声。

4.维度压缩:PCA可以在保持数据关键特征的同时,将高维数据映射到低维空间,从而减少数据的存储和计算成本。

这对于处理大规模数据集非常重要。

三、PCA的使用方法:1. 数据预处理:对原始数据进行去均值操作,以使数据的均值为零。

可以使用公式X' = X - mean(X),其中,X为原始数据,mean(X)为每列的均值。

2. 计算协方差矩阵:计算去均值后的数据的协方差矩阵。

可以使用公式cov_matrix = cov(X'),其中,cov(X')为协方差矩阵,X'为去均值后的数据。

3.计算特征向量和特征值:对协方差矩阵进行特征值分解,获得特征向量和特征值。

基于MATLAB的数据挖掘技术研究与实践

基于MATLAB的数据挖掘技术研究与实践数据挖掘技术是一种通过大数据分析来发现规律、趋势和模式的过程。

在当今信息爆炸的时代,数据量呈指数级增长,如何从海量数据中提取有用信息成为了各行各业都面临的挑战。

MATLAB作为一种强大的科学计算软件,被广泛应用于数据挖掘领域。

本文将探讨基于MATLAB的数据挖掘技术研究与实践。

一、数据挖掘技术概述数据挖掘技术是一门跨学科的领域,涉及统计学、机器学习、人工智能等多个学科知识。

其主要任务包括分类、聚类、关联规则挖掘、异常检测等。

通过对数据进行分析和建模,可以帮助人们更好地理解数据背后的规律,为决策提供支持。

二、MATLAB在数据挖掘中的应用MATLAB作为一种强大的科学计算软件,具有丰富的工具箱和函数库,为数据挖掘提供了便利。

在MATLAB中,可以使用各种算法来进行数据挖掘分析,如聚类算法、分类算法、关联规则挖掘算法等。

同时,MATLAB还提供了可视化工具,帮助用户直观地展示分析结果。

三、基于MATLAB的数据预处理在进行数据挖掘之前,通常需要对原始数据进行预处理。

数据预处理包括数据清洗、缺失值处理、异常值检测和特征选择等步骤。

MATLAB提供了丰富的函数和工具箱,可以帮助用户高效地完成数据预处理工作。

四、基于MATLAB的聚类分析聚类分析是一种常用的无监督学习方法,旨在将相似的对象归为一类。

MATLAB中集成了多种聚类算法,如K均值聚类、层次聚类等。

用户可以根据具体需求选择合适的算法,并通过MATLAB快速实现聚类分析。

五、基于MATLAB的分类建模分类建模是一种常见的监督学习方法,旨在根据已知类别对新样本进行分类。

MATLAB提供了多种分类算法,如支持向量机、决策树、神经网络等。

用户可以通过MATLAB构建分类模型,并对模型性能进行评估和优化。

六、基于MATLAB的关联规则挖掘关联规则挖掘是一种发现事务数据库中频繁项集之间关联关系的方法。

MATLAB中提供了适用于关联规则挖掘的函数和工具箱,用户可以快速发现数据中隐藏的规律和趋势。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据挖掘大作业
——PCA 姓名:***
学号:********
时间:2013年4月26日
主分量分析
一、PCA简介
主成分分析(Principal Component Analysis, 简称PCA)是一种常用的基于变量协方差矩阵对信息进行处理、压缩和抽提的有效方法。

算法如下:
Step1 分别求各维的平均值,然后对于所有的样例,都减去对应的均值,得到DataAdjust(m*n)
Step2 求特征协方差矩阵。

Step3 求协方差的特征值和特征向量,得到特征向量与特征值
Step4 将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对
应的k个特征向量分别作为列向量组成特征向量矩阵。

Step5 将样本点投影到选取的特征向量上。

假设样例数为m,特征数为n,减
去均值后的样本矩阵为DataAdjust(m*n),协方差矩阵是n*n,选取的k
个特征向量组成的矩阵为EigenVectors(n*k)。

那么投影后的数据FinalData为
二、代码
clear all
clc
load('C:\segment.dat');
class=segment;
%% 求DataAjust
for j=1:19
u=mean(class(:,j));
DataAjust(:,j)=class(:,j)-u;
end
d=cov(class(:,1:19));
[b2,b1]=eig(d);
eigvalue=eig(d);
vector=b2;
[e,f]=sort(eigvalue);
%k=4;%说明压缩维数
for k=1:19
for i=1:k
Eigvector(:,i)=vector(:,f(20-i));
end
final=DataAjust*Eigvector;
final(:,k+1)=class(:,20);
w(:,1)=final(:,k+1);
for Tencount=1:10
c=randperm(2310);
m=1;
p=1;
for category=1:7
n=0;
for j=1:size(c,2)
if w(c(j))==category
n=n+1;
b(n)=c(j);
end
end
d=floor(size(b,2)*0.1);
train(m:m+d-1,:)=final(b(1:d),:);
m=m+d;
%train(201,:)=k;
% test(:,p:p+size(b,2)-d-1)=a(:,b(d+1:size(b,2)));
% p=p+size(b,2)-d;
%test(201,:)=k;
b=[];
end
%% 分类
test=final;
kmeans=1;%指定近邻方式
for x=1:size(test,1)
for y=1:size(train,1)
%%
distance=0;
for k1=1:k
distance=distance+(test(x,k1)-train(y,k1)).^2;
end
dis(y)=distance;
end
[z,v]=sort(dis);
p1=zeros(1,7);
for n=1:kmeans
for q1=1:7
if train(v(n),k+1)==q1
p1(q1)=p1(q1)+1;
end
end
end
[z1,v1]=max(p1);
test(x,k+2)=v1;
end
%% 统计识别率
count=0;
for i=1:size(test,1)
if test(i,k+1)==test(i,k+2)
count=count+1;
end
end
lv(Tencount)=count/2310;
end
lv1(k)=mean(lv);
train=[];
end
k=1:1:19;
lv2=lv1;
plot(k,lv2,'b-','Marker','o','LineWidth',2);
%hold on;
%m2p=linspace(0,19,28);
%plot(m2p,spline(k,lv2,m2p),'r-','LineWidth',2); grid on;
title('降到1—19维时识别率统计');
三、结果截图及分析
由上图可知,当把数据维数降至7维或以上时分类效果已经趋于稳定。

由此证明了PCA的科学性。

相关文档
最新文档