Python 之 sklearn 实现 PCA 降维

关于 PCA 算法的讲解文章不胜枚举,这里主要谈一谈 基于 Python 中 sklearn 模块的 PCA 算法实现。Explained Variance 累计贡献率 又名 累计方差贡献率 不要简单理解为 解释方差,它是 PCA 降维维度的重要指标,一般选取累计贡献率在90%左右的维度作为PCA 降维的参考维度。在识别算法的实现过程中,当我们求得某一数据库各类别特征参考维度时,取最大维度作为每一类特征的维度,即可实现数据降维。现对数据求取累计贡献率,算法实现如下。

import numpy
from sklearn import decomposition

# 构造聚类 类别数据
Data_Set = []
for k in range(5):
    arr = numpy.random.random([3000,45])
    for i in numpy.arange(0,3000):
        j = i%3
        arr[i,k*9+j*3:k*9+j*3+3] = arr[i,k*9+j*3:k*9+j*3+3]+k*0.25
    print arr.shape
    Data_Set.append(arr)
Dim_Set = []
for Cat_Num in range(len(Data_Set)):
    pca = decomposition.PCA()
    pca.fit(Data_Set[Cat_Num])
    # 累计贡献率 又名 累计方差贡献率 不要简单理解为 解释方差!!!
    EV_List = pca.explained_variance_
    EVR_List = []
    for j in range(len(EV_List)):
        EVR_List.append(EV_List[j]/EV_List[0])
    for j in range(len(EVR_List)):
        if(EVR_List[j]<0.90):
            Dim = j
            break
    Dim_Set.append(Dim)

此时,即可根据参考维度,求得亟待处理数据的降维维度。sklearn 对数据的降维实现,函数详述如下。

sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)

参数说明:

n_components:

类型:int 或者 string,缺省时默认为None,所有成分被保留。

赋值为int,比如n_components=1,将把原始数据降到一个维度。

赋值为string,比如n_components=‘mle‘,将自动选取特征个数n,使得满足所要求的方差百分比。

意义:PCA算法中所要保留的主成分个数n,也即保留下来的特征个数n

copy:

类型:bool,True或者False,缺省时默认为True。

意义:表示是否在运行算法时,将原始训练数据复制一份。若为True,则运行PCA算法后,原始训练数据的值不会有任何改变,因为是在原始数据的副本上进行运算;若为False,则运行PCA算法后,原始训练数据的值会改,因为是在原始数据上进行降维计算。

whiten:

类型:bool,缺省时默认为False

意义:白化,使得每个特征具有相同的方差。

Dim = max(Dim_Set)
pca = decomposition.PCA(n_components=Dim, copy=True, whiten=False)
for k in range(len(Data_Set)):
    Data_Set[k] = pca.fit_transform(Data_Set[k])

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 09:04:07

Python 之 sklearn 实现 PCA 降维的相关文章

sklearn pca降维

PCA降维 一.原理 这篇文章总结的不错PCA的数学原理. PCA主成分分析是将原始数据以线性形式映射到维度互不相关的子空间.主要就是寻找方差最大的不相关维度.数据的最大方差给出了数据的最重要信息. 二.优缺点 优:将高维数据映射到低维,降低数据的复杂性,识别最重要的多个特征 不足:不一定需要,且可能损失有用信息 适用数值型数据 三.步骤 1.原始数据X,对于每列属性,去平均值(也可以对数值进行标准分化) 2.计算样本点的协方差矩阵(列间两两计算相关性) 3.求出协方差矩阵的特征值和对应的特征向

sklearn中的降维算法PCA和SVD

sklearn中的降维算法PCA和SVD 1 概述 1.1 从什么叫“维度”说开来 1.2 sklearn中的降维算法 2 PCA与SVD 2.1 降维究竟是怎样实现? 2.2 重要参数n_components 2.2.1 迷你案例:高维数据的可视化 2.2.2 最大似然估计自选超参数 2.2.3 按信息量占比选超参数 2.3 PCA中的SVD 2.3.1 PCA中的SVD哪里来? 2.3.2 重要参数svd_solver 与 random_state 2.3.3 重要属性components_

【机器学习】Sklearn库主成分分析PCA降维的运用实战

1.PCA分类介绍 在scikit-learn中,与PCA相关的类都在sklearn.decomposition包中.最常用的PCA类就是sklearn.decomposition.PCA. 原理:线性映射(或线性变换),简单的来说就是将高维空间数据投影到低维空间上,那么在数据分析上,我们是将数据的主成分(包含信息量大的维度)保留下来,忽略掉对数据描述不重要的成分.即将主成分维度组成的向量空间作为低维空间,将高维数据投影到这个空间上就完成了降维的工作. 除了PCA类以外,最常用的PCA相关类还有

Python的Sklearn库的基本用法

Sklearn库是基于Python的第三方库,它包括机器学习开发的各个方面. 机器学习的开发基本分为六个步骤,1)获取数据,2)数据处理,3)特征工程,4)机器学习的算法训练(设计模型),5)模型评估,6)应用. 机器学习的算法一般分为两种:一种既有目标值又有特征值的算法称之为监督学习,另一种只有特征值的算法称之为无监督学习.而监督学习还可以继续细分为分类算法和回归算法. 1)获取数据⑤ Sklearn中获取数据集使用的包为Sklearn.datasets,之后可以接load_* 和fetch_

用PCA降维 (Principal Component Analysis,主成分分析)

参考资料:Mastering Machine Learning With scikit-learn 降维致力于解决三类问题.第一,降维可以缓解维度灾难问题.第二,降维可以在压缩数据的同时让信息损失最 小化.第三,理解几百个维度的数据结构很困难,两三个维度的数据通过可视化更容易理解 PCA简介 主成分分析也称为卡尔胡宁-勒夫变换(Karhunen-Loeve Transform),是一种用于探索高维数据结 构的技术.PCA通常用于高维数据集的探索与可视化.还可以用于数据压缩,数据预处理等.PCA可

机器学习算法-PCA降维技术

机器学习算法-PCA降维 一.引言 在实际的数据分析问题中我们遇到的问题通常有较高维数的特征,在进行实际的数据分析的时候,我们并不会将所有的特征都用于算法的训练,而是挑选出我们认为可能对目标有影响的特征.比如在泰坦尼克号乘员生存预测的问题中我们会将姓名作为无用信息进行处理,这是我们可以从直观上比较好理解的.但是有些特征之间可能存在强相关关系,比如研究一个地区的发展状况,我们可能会选择该地区的GDP和人均消费水平这两个特征作为一个衡量指标.显然这两者之间是存在较强的相关关系,他们描述的都是该地区的

[综] PCA降维

http://blog.json.tw/using-matlab-implementing-pca-dimension-reduction 設有m筆資料, 每筆資料皆為n維, 如此可將他們視為一個mxn matrix.若資料的維度太大時, 可能不利於分析, 例如這m筆資料用作機器學習. PCA的想法是算出這mxn matrix的斜方差矩陣, 此矩陣大小為nxn, 計算此矩陣n個特徵值(eigen value)及其對應的特徵向量(eigen vector), 依eigen value大小由小到大排

机器学习公开课笔记(8):k-means聚类和PCA降维

K-Means算法 非监督式学习对一组无标签的数据试图发现其内在的结构,主要用途包括: 市场划分(Market Segmentation) 社交网络分析(Social Network Analysis) 管理计算机集群(Organize Computer Clusters) 天文学数据分析(Astronomical Data Analysis) K-Means算法属于非监督式学习的一种,算法的输入是:训练数据集$\{x^{(1)},x^{(2)},\ldots, x^{(m)}\}$(其中$x^

Python 之 sklearn 交叉验证 数据拆分

本文K折验证拟采用的是 Python 中 sklearn 包中的 StratifiedKFold 方法. 方法思想详见:http://scikit-learn.org/stable/modules/cross_validation.html StratifiedKFold is a variation of k-fold which returns stratified folds: each set contains approximately the same percentage of s