主成分分析简单例子

article/2025/5/16 18:31:12

一、数据降维

    对于现在维数比较多的数据,我们首先需要做的就是对其进行降维操作。降维,简单来说就是说在尽量保证数据本质的前提下将数据中的维数降低。降维的操作可以理解为一种映射关系,例如函数,即由原来的二维转换成了一维。处理降维的技术有很多种,如前面的 SVD奇异值分解,主成分分析(PCA),因子分析(FA),独立成分分析(ICA)等等。

二、PCA的概念

    PCA是一种较为常用的降维技术,PCA的思想是将维特征映射到维上, 维是全新的正交特征。这维特征称为主元,是重新构造出来的维特征。在PCA中,数据从原来的坐标系转换到新的坐标系下,新的坐标系的选择与数据本身是密切相关的。其中,第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴选取的是与第一个坐标轴正交且具有最大方差的方向,依次类推,我们可以取到这样的个坐标轴。

三、PCA的操作过程

    1、PCA的操作流程大致如下:

  • 去平均值,即每一位特征减去各自的平均值
  • 计算协方差矩阵
  • 计算协方差矩阵的特征值与特征向量
  • 对特征值从大到小排序
  • 保留最大的个特征向量
  • 将数据转换到个特征向量构建的新空间中

    2、具体的例子

        假设二维数据为

  • 取平均值
       我们计算每一维特征的平均值,并去除平均值,我们计算出均值

去除均值后的矩阵为

  • 计算的协方差矩阵
  • 计算的特征值与特征向量
其中,特征值为

特征向量为

  • 对特征值进行排序,显然就两个特征值
  • 选择最大的那个特征值对应的特征向量
  • 转换到新的空间

四、实验的仿真

我们队一个数据集进行了测试:

MATLAB实验代码如下:
主程序
[plain]  view plain copy
  1. %% pca  
  2.   
  3. dataSet = load('testSet.txt');%导入数据  
  4.   
  5. % pca  
  6. [FinalData, reconData] = PCA(dataSet, 1);  
  7.   
  8. %% 作图  
  9. hold on  
  10. plot(dataSet(:,1), dataSet(:,2), '.');  
  11. plot(reconData(:,1), reconData(:,2), '.r');  
  12. hold off  
  13.       
  14.       

PCA函数段
[plain]  view plain copy
  1. function [ FinalData,reconData ] = PCA( dataSet, k )  
  2.     [m,n] = size(dataSet);  
  3.   
  4.    %% 去除平均值  
  5.     %取平均值  
  6.     dataSetMean = mean(dataSet);  
  7.     %减去平均值  
  8.     dataSetAdjust = zeros(m,n);  
  9.     for i = 1 : m  
  10.         dataSetAdjust(i , :) = dataSet(i , :) - dataSetMean;  
  11.     end  
  12.   
  13.     %% 计算协方差矩阵  
  14.     dataCov = cov(dataSetAdjust);  
  15.   
  16.     %% 计算协方差矩阵的特征值与特征向量  
  17.     [V, D] = eig(dataCov);  
  18.       
  19.     % 将特征值矩阵转换成向量  
  20.     d = zeros(1, n);  
  21.     for i = 1:n  
  22.         d(1,i) = D(i,i);  
  23.     end  
  24.       
  25.     %% 对特征值排序  
  26.     [maxD, index] = sort(d);  
  27.       
  28.     %% 选取前k个最大的特征值  
  29.     % maxD_k = maxD(1, (n-k+1):n);  
  30.     index_k = index(1, (n-k+1):n);  
  31.     % 对应的特征向量  
  32.     V_k = zeros(n,k);  
  33.     for i = 1:k  
  34.         V_k(:,i) = V(:,index_k(1,i));  
  35.     end  
  36.       
  37.     %% 转换到新的空间  
  38.     FinalData = dataSetAdjust*V_k;  
  39.       
  40.     % 在原图中找到这些点  
  41.     reconData = FinalData * V_k';  
  42.     for i = 1 : m  
  43.         reconData(i , :) = reconData(i , :) + dataSetMean;  
  44.     end  
  45. end  

http://chatgpt.dhexx.cn/article/8h5VgofK.shtml

相关文章

spss分析方法-主成分分析

spss分析方法-主成分分析(转载) 主成分分析利用的是“降维”的思想,利用原始变量的线性组合组成主成分。在信息损失较小的前提下,把多个指标转化为几个互补相关的综合指标。下面我们主要从下面四个方面来解说: 实际…

主成分分析案例

去百度文库上一搜,是很老的题目了。这里所做的只是准备工作,为后面更多的数据处理做准备。 例题 1.对原始资料矩阵进行标准化处理 zef_data xlsread(chengshi.xls); z zscore(zef_data) z 1.1977 0.7149 0.6674 1.1390 0.9189 3.111…

快速搞定PCA(主成分分析)(原理 代码 案例)

目录 一、基本介绍 1.1原理 1.2主成分分析的几何解释 1.3主要步骤 1.4主成分个数的选取原则 二、主成分分析代码 2.1MATLAB代码 2.2Python代码 三、实用案例 一、基本介绍 1.1原理 主成分分析是最常用的线性降维方法,通过某种线性投影,将高维的数…

【机器学习】主成分分析实现案例 (PCA)

一、说明 这篇文章的目的是提供主成分分析(PCA)的完整和简化的解释。我们将逐步介绍它是如何工作的,这样每个人都可以理解并使用它,即使是那些没有强大数学背景的人。 PCA是网络上广泛覆盖的机器学习方法,并且有一些关…

什么是主成分分析?经典案例解析变量降维

1、作用 主成分分析将多个有一定相关性的指标进行线性组合,以最少的维度解释原数据中尽可能多的信息为目标进行降维,降维后的各变量间彼此线性无关,最终确定的新变量是原始变量的线性组合,且越往后主成分在方差中的比重也小&…

比较两篇文章的相似性方法

对于这个题目,开始毫无头绪,后来经过查阅资料现在讲方法总结如下: 1、利用余弦定理 我们知道向量 a,b之间的夹角可用余弦定理求得: 如果夹角的余弦值越小,那么夹角也越大。如果2个向量相等,那么其值为1。利…

Python案例分析|文本相似度比较分析

本案例通过设计和实现有关文本相似度比较的类Vector和Sketch,帮助大家进一步掌握设计Python类来解决实际问题的能力。 01、文本相似度比较概述 通过计算并比较文档的摘要可实现文本的相似度比较。 文档摘要的最简单形式可以使用文档中的k-grams(k个连…

计算机如何判断两篇文章相似性

这个仍然是极客时间上,关于《索引技术核心20讲》的一篇笔记同时结合自己的理解加了点料,这个专栏虽然只有20讲,但是真不错,老师解答问题还是很积极,回答字数经常比问题字数多。有兴趣的朋友可以到我星球(在…

ai写文章检测原理(文章相似度检测)

小编来了!今天要和大家聊一聊关于ai写文章检测原理的评测对比。究竟哪种方法更加高效准确呢?让我们一起来看看吧! 概括:本文将从多个角度对ai写文章检测原理进行评测对比,包括算法准确性、速度、自动化程度、用户体验…

【跨语言剽窃检测】文本相似度分析之一

对比文件1: 2010年的跨语言剽窃检测新方法 作者RaFael Corezola Pereira instituion : UFRGS 摘要: 作者提出一个跨语言剽窃检测新方法,分为5个主要阶段: languange normalization、retrieval of candidate documents、classfier …

文本相似度综述

本文目录 文本相似度的定义文本相似度计算方法基于字符串的方法基于语料库的方法基于词袋VSMLSA、PLSALDA(需要进一步了解) 基于神经网络基于搜索引擎 基于世界知识基于本体基于网络知识 其他方法句法分析混合方法 文本相似度的定义 其中, common&#x…

JAVA-计算两篇文章的相似度

1.场景: 在很多公司的文件管理系统中,都有类似于对比多篇文章的相似度,例如在写公众号推文时,如果标记了原创,就会对比当前文章和库里已存在文章的相似程度,如果相似度过于高,则标记为原创的文章…

免费好用的文章相似度检测软件推荐

相信很多人在写作的时候都会遇到这样的问题,就是怕自己写出的文章被抄袭。为了保证自己的原创性,我们需要使用一些文章相似度检测软件来帮助我们检测文章是否被抄袭。那么,有哪些免费好用的文章相似度检测软件呢?下面就为大家介绍…

判断两篇文章的相似度

判断相似度 基于jieba 关键字提取的方法textrank关键字的提取代码:tf-idf关键字的提取代码:统计数据统计数据的代码:完整代码: 基于jieba 关键字提取的方法 textrank 1,将待抽取关键词的文本进行分词 2,以…

检测文章相似度的方法?文章原创度检测工具免费

免费检测文章相似度的软件,什么是检测文章相似度的软件,简单来说就是原创检测工具,相信不少的朋友都在利用这个功能来检测自己文章的原创度是多少?要做好一篇文章真的只需要检测文章的相似度吗?答案:肯定是…

[将小白进行到底] 如何比较两篇文章的相似度

其实这个题目已经有很多人写过了,数学之美里就有,最近阮一峰的博客里也写了,本文基本上遵循的就是他的思路,只是让其看起来再小白一点点。其实说白了就是用自己的话,再把同样一件事描述一下,顺便扩扩句&…

文本相似度的检测

项目原理 基于词频:统计文章中词频,构建词频特征向量,利用特征向量夹角的余弦值表示文本的相似度。两篇文章最大相似度为1,特征向量夹角为0。 基于词频的文本相似度检测步骤: 文本1和文本2分词—去停用词统计两篇文章的词频词频向量1和词频向量2相似度的计算分词:例:“…

网页抓取:PHP实现网页爬虫方式小结

抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐。LZ总结了几种常用的、易于实现的网页抓取方式,如果熟悉JQuery选择器,这几种框架会相当简单。 一、Ganon …

php中取页面的值_php如何抓取网页上的数据

php中抓取网页内容的实例详解 方法一:使用file_get_contents方法实现$url "http://news.sina.com.cn/c/nd/2016-10-23/doc-ifxwztru6951143.shtml"; $html file_get_contents($url); //如果出现中文乱码使用下面代码 //$getcontent iconv("gb2312…

关于如何使用PHP抓取网页数据并进行处理的经验

在网络时代,数据是无处不在的。很多时候,我们需要从网页上获取特定的数据,以便进行进一步的处理和分析。而PHP作为一种强大的编程语言,提供了丰富的函数和库来帮助我们实现这个目标。本文将分享一些关于如何使用PHP抓取网页数据并…