[转载]简单易学的机器学习算法-主成分分析(PCA)
一、数据降维
二、PCA的概念
三、PCA的操作过程
1、PCA的操作流程大致如下:
- 去平均值,即每一位特征减去各自的平均值
- 计算协方差矩阵
- 计算协方差矩阵的特征值与特征向量
- 对特征值从大到小排序
- 保留最大的
个特征向量
- 将数据转换到
个特征向量构建的新空间中
2、具体的例子
![](/assets/blank.gif)
- 取平均值
我们计算每一维特征的平均值,并去除平均值,我们计算出均值 为
![](/assets/blank.gif)
![](/assets/blank.gif)
- 计算
的协方差矩阵
![](/assets/blank.gif)
- 计算
的特征值与特征向量
其中,特征值为
![](/assets/blank.gif)
![](/assets/blank.gif)
- 对特征值进行排序,显然就两个特征值
- 选择最大的那个特征值对应的特征向量
![](/assets/blank.gif)
- 转换到新的空间
![](/assets/blank.gif)
四、实验的仿真
![](/assets/blank.gif)
![](https://code.csdn.net/assets/CODE_ico.png)
- %% pca
- dataSet = load('testSet.txt');%导入数据
- % pca
- [FinalData, reconData] = PCA(dataSet, 1);
- %% 作图
- hold on
- plot(dataSet(:,1), dataSet(:,2), '.');
- plot(reconData(:,1), reconData(:,2), '.r');
- hold off
PCA函数段
![](https://code.csdn.net/assets/CODE_ico.png)
- function [ FinalData,reconData ] = PCA( dataSet, k )
- [m,n] = size(dataSet);
- %% 去除平均值
- %取平均值
- dataSetMean = mean(dataSet);
- %减去平均值
- dataSetAdjust = zeros(m,n);
- for i = 1 : m
- dataSetAdjust(i , :) = dataSet(i , :) - dataSetMean;
- end
- %% 计算协方差矩阵
- dataCov = cov(dataSetAdjust);
- %% 计算协方差矩阵的特征值与特征向量
- [V, D] = eig(dataCov);
- % 将特征值矩阵转换成向量
- d = zeros(1, n);
- for i = 1:n
- d(1,i) = D(i,i);
- end
- %% 对特征值排序
- [maxD, index] = sort(d);
- %% 选取前k个最大的特征值
- % maxD_k = maxD(1, (n-k+1):n);
- index_k = index(1, (n-k+1):n);
- % 对应的特征向量
- V_k = zeros(n,k);
- for i = 1:k
- V_k(:,i) = V(:,index_k(1,i));
- end
- %% 转换到新的空间
- FinalData = dataSetAdjust*V_k;
- % 在原图中找到这些点
- reconData = FinalData * V_k';
- for i = 1 : m
- reconData(i , :) = reconData(i , :) + dataSetMean;
- end
- end
转载于:https://www.cnblogs.com/khunwang/articles/3809689.html
[转载]简单易学的机器学习算法-主成分分析(PCA)相关推荐
- 简单易学的机器学习算法——梯度提升决策树GBDT
梯度提升决策树(Gradient Boosting Decision Tree,GBDT)算法是近年来被提及比较多的一个算法,这主要得益于其算法的性能,以及该算法在各类数据挖掘以及机器学习比赛中的卓越 ...
- 简单易学的机器学习算法——Metropolis-Hastings算法
在简单易学的机器学习算法--马尔可夫链蒙特卡罗方法MCMC中简单介绍了马尔可夫链蒙特卡罗MCMC方法的基本原理,介绍了Metropolis采样算法的基本过程,这一部分,主要介绍Metropolis-H ...
- 简单易学的机器学习算法——Latent Dirichlet Allocation(理论篇)
引言 LDA(Latent Dirichlet Allocation)称为潜在狄利克雷分布,是文本语义分析中比较重要的一个模型,同时,LDA模型中使用到了贝叶斯思维的一些知识,这些知识是统计机器学习的 ...
- 简单易学的机器学习算法——受限玻尔兹曼机RBM
受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)是一种基于能量模型的神经网络模型,在Hinton提出针对其的训练算法(对比分歧算法)后,RBM得到了更多的关注,利用 ...
- 简单易学的机器学习算法——非线性支持向量机
一.回顾 前面三篇博文主要介绍了支持向量机的基本概念,线性可分支持向量机的原理以及线性支持向量机的原理,线性可分支持向量机是线性支持向量机的基础.对于线性支持向量机,选择一个合适的惩罚参数,并 ...
- 简单易学的机器学习算法——K-Means++算法
一.K-Means算法存在的问题 由于K-Means算法的简单且易于实现,因此K-Means算法得到了很多的应用,但是从K-Means算法的过程中发现,K-Means算法中的聚类中心的个数k需要事先指 ...
- 简单易学的机器学习算法——Gibbs采样
一.Gibbs采样概述 前面介绍的Metropolis-Hastings采样为从指定分布中进行采样提供了一个统一的框架,但是采样的效率依赖于指定的分布的选择,若是选择的不好,会使得接受率比较低,大量的 ...
- 史上简单易学的机器学习算法——EM算法 缘木求鱼
一.机器学习中的参数估计问题 二.EM算法简介 在上述存在隐变量的问题中,不能直接通过极大似然估计求出模型中的参数,EM算法是一种解决存在隐含变量优化问题的有效方法.EM算法是期望极大(Expecta ...
- 简单易学的机器学习算法——神经网络之BP神经网络
一.BP神经网络的概念 BP神经网络是一种多层的前馈神经网络,其主要的特点是:信号是前向传播的,而误差是反向传播的.具体来说,对于如下的只含一个隐层的神经网络模型: (三层BP神经网络模型) ...
最新文章
- 【Vue】宝塔面板服务器配置Vue项目
- 声音信标规格说明 2020-5-25
- processing文本可视化_推荐7个数据可视化工具,让你的信息快速生成可视化
- 题目2:隐式图的搜索问题(A*算法解决八数码)
- python代码实现文件复制txt文件_工具类(1.1)
- 分布式系统原理_终于有架构大牛把分布式系统概念讲明白了,竟然用了足足800页...
- matlab重要性采样,Importance Sampling (重要性采样)介绍 | 文艺数学君
- 完整仿写鸿洋WanAndroid网站客户端
- 【渝粤教育】21秋期末考试宏微观经济学10545k1
- 湿淀粉 - 搜搜百科
- 产品经理 项目管理
- vue---图像上传/裁剪/预览/删除/查询
- 负载均衡器-Citrix
- 2022年江苏省职业院校技能大赛网络搭建与应用赛项中职样卷
- netlink实现驱动和应用层通信
- 通达信接口服务如何委托下单?
- light-4j真的比springboot快44倍吗?
- orcad capture 快速制作原理图库
- redis安装Windows
- Spotify 模型
热门文章
- 浙大PAT 乙级(题号1031~1035)自解全AC Java | C++实现
- 学习数据科学需要了解一些什么,什么是学习统计学最好的方法呢?
- 卸载Anaconda3
- 多点拟合求平面的RANSAC算法
- python怎么连接远程服务器没有按时响应_python通过paramiko执行ssh命令时设置超时时间 - Python - 服务器之家...
- 简易新浪微博客户端--Sweetheart
- The Foundry Nuke 14Mac软件安装包下载Nuke14Mac安装教程
- OA 办公系统详细的功能介绍
- 查券机器人微信公众号配置教程分享
- 大数据揭晓:复联4上映4天破20亿,万达影院2018年140.88亿居榜首