降维之pca算法

pca算法:

算法原理: pca利用的两个维度之间的关系和协方差成正比,协方差为0时,表示这两个维度无关,如果协方差越大这表明两个维度之间相关性越大,因而降维的时候,

都是找协方差最大的。

1 将XX中的数据进行零均值化,即每一列都减去其均值。
2 计算协方差矩阵C=1mXTXC=1mXTX
3 求出CC的特征值和特征向量
4 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
5 Y=XPY=XP就是降维到k维后的数据。

代码:

# coding=utf-8
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris

data = load_iris()

y = data.target
X = data.data
print data.feature_names
print data.data;
pca = PCA(n_components=2)
reduced_X = pca.fit_transform(X)

red_x, red_y = [], []
blue_x, blue_y = [], []
green_x, green_y = [], []

for i in range(len(reduced_X)):
    if y[i] == 0:
        red_x.append(reduced_X[i][0])
        red_y.append(reduced_X[i][1])
    elif y[i] == 1:
        blue_x.append(reduced_X[i][0])
        blue_y.append(reduced_X[i][1])
    else:
        green_x.append(reduced_X[i][0])
        green_y.append(reduced_X[i][1])

plt.scatter(red_x, red_y, c=‘r‘, marker=‘x‘)
plt.scatter(blue_x, blue_y, c=‘b‘, marker=‘D‘)
plt.scatter(green_x, green_y, c=‘g‘, marker=‘.‘)
plt.show()

时间: 2024-10-18 09:58:18

降维之pca算法的相关文章

机器学习实战ByMatlab(二)PCA算法

PCA 算法也叫主成分分析(principal components analysis),主要是用于数据降维的. 为什么要进行数据降维?因为实际情况中我们的训练数据会存在特征过多或者是特征累赘的问题,比如: 一个关于汽车的样本数据,一个特征是"km/h的最大速度特征",另一个是"英里每小时"的最大速度特征,很显然这两个特征具有很强的相关性 拿到一个样本,特征非常多,样本缺很少,这样的数据用回归去你和将非常困难,很容易导致过度拟合 PCA算法就是用来解决这种问题的,其

PCA算法和实例

PCA算法 算法步骤: 假设有m条n维数据. 1. 将原始数据按列组成n行m列矩阵X 2. 将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值 3. 求出协方差矩阵C=1/mXXT 4. 求出协方差矩阵的特征值以及对应的特征向量 5. 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P 6. Y=PX即为降维到k维后的数据 实例 以这个为例,我们用PCA的方法将这组二维数据降到一维 因为这个矩阵的每行已经是零均值,所以我们可以直接求协方差矩阵: 然后求其特征值和特

数据挖掘算法学习(四)PCA算法

算法简介 主成分分析(PrincipalComponentAnalysis,简称PCA)是一种常用的基于变量协方差矩阵对信息进行处理.压缩和抽提的有效方法.主要用于对特征进行降维. 算法假设 数据的概率分布满足高斯分布或是指数型的概率分布.方差高的向量视为主元. 算法输入 包含n条记录的数据集 算法输出 降维或压缩后的数据集 算法思想 ?1.计算所有样本的均值m和协方差矩阵S: ?2.计算S的特征值,并由大到小排序: ?3.选择前n'个特征值对应的特征矢量作成一个变换矩阵E=[e1,e2, -,

PCA算法理解及代码实现

github:PCA代码实现.PCA应用 本文算法均使用python3实现 1. 数据降维 ??在实际生产生活中,我们所获得的数据集在特征上往往具有很高的维度,对高维度的数据进行处理时消耗的时间很大,并且过多的特征变量也会妨碍查找规律的建立.如何在最大程度上保留数据集的信息量的前提下进行数据维度的降低,是我们需要解决的问题. ??对数据进行降维有以下优点: ??(1)使得数据集更易使用 ??(2)降低很多算法的计算开销 ??(3)去除噪声 ??(4)使得结果易懂 ??降维技术作为数据预处理的一部

PCA算法

1. 引言 降维是对数据高维度特征的一种预处理方法.降维是将高纬度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的.在实际的生产和应用中,降维在一定的信息损失范围内,可以节省大量的时间和成本. PCA(principal compount analysis),即主成分分析法,是一种使用最广泛的数据压缩算法.在PCA中,数据从原来的坐标系转换到新的坐标系,由数据本身决定.转换坐标系时,以方差最大的方向作为坐标轴方向,因为数据的最大方差给出了数据的最重要的信息.第

【转】PCA算法学习_1(OpenCV中PCA实现人脸降维)

前言: PCA是大家经常用来减少数据集的维数,同时保留数据集中对方差贡献最大的特征来达到简化数据集的目的.本文通过使用PCA来提取人脸中的特征脸这个例子,来熟悉下在oepncv中怎样使用PCA这个类. 开发环境:ubuntu12.04+Qt4.8.2+QtCreator2.5.1+opencv2.4.2 PCA数学理论: 关于PCA的理论,资料很多,公式也一大把,本人功底有限,理论方面这里就不列出了.下面主要从应用的角度大概来讲讲具体怎么实现数据集的降维. 把原始数据中每个样本用一个向量表示,然

2019-07-31【机器学习】无监督学习之降维PCA算法实例 (鸢尾花)

样本 代码: import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.datasets import load_iris #加载鸢尾花数据集导入函数 data = load_iris()#加载数据,array([[5.1 3.5 1.4 0.2].....]) #print(data) y = data.target #各50个 0,1,2 暂不明作用, #print(y) X = da

降维技术---PCA

数据计算和结果展示一直是数据挖掘领域的难点,一般情况下,数据都拥有超过三维,维数越多,处理上就越吃力.所以,采用降维技术对数据今夕简化一直是数据挖掘工作者感兴趣的方向. 对数据进行简化的好处:使得数据集更易于使用,降低很多算法的计算开销,去除噪声,使得结果易懂. 主成分分析法(PCA)是一种常用的降维技术.在PCA中,数据从原来的坐标系转换到了新的坐标系,新坐标系的选择是由数据本身决定的.第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方向.

python下PCA算法与人脸识别

关于这部分主要是想在python下试验一下主成分分析(PCA)算法以及简单的人脸识别.曾经详述过matlab下的PCA以及SVM算法进行人脸识别技术,参考如下: 主成分分析法-简单人脸识别(一) 主成分分析-简单人脸识别(二) PCA实验人脸库-人脸识别(四) PCA+支持向量机-人脸识别(五) 主成分分析(PCA)算法主要是对高维数据进行降维,最大限度的找到数据间的相互关系,在机器学习.数据挖掘上很有用.在机器学习领域算法众多,贴一个: 大神博客索引 关于PCA的核心思想与原理介绍上述已经给出