用scikit-learn做数据降维

作者: Jeriah | 来源:发表于2017-03-05 23:45 被阅读4670次
主成分分析 PCA: principal component analysis

主成分分析是一种简化数据集维数的技术。特点是保存数据集中对方差影响最大的那些特征。

在信息理论中,信号会有较大的方差,噪声会有较小的方差。用我们自己的想法,在多维数据中选出最有代表性的一维一定是差别较大的一维。

具体的计算方法可以参考这篇文章:主成分分析(Principal components analysis)-最大方差解释

在 scikit-learn 这个工具下,进行主成分分析用的是 PCA 类。Python代码是:

from sklearn.decomposition import PCA

PCA有许多种方式,参考:sckikit-learn 上的 PCA 页

随机映射 random projection

sklearn.random_projection 模块实现了一种简单和计算高效的方法,通过交易控制量的精度(作为附加方差),以缩短数据的维数,从而缩短处理时间和缩小模型大小。 该模块实现两种类型的非结构化随机矩阵:高斯随机矩阵和稀疏随机矩阵。

随机映射矩阵的维度和分布是被控制的,为了保证在数据集中任意两个样本的距离。随机映射也是一种合适的基于距离的近似精确的方法。

Johnson-Lindenstrauss Lemma 定理保证了降维方法精度的上下限。johnson_lindenstrauss_min_dim 是找到一个数量能保证随机降维到这个数量的矩阵。n_samples 是样本的数量,eps 是由 J-L 定理定义的最大失真率。

>>> from sklearn.random_projection import johnson_lindenstrauss_min_dim
>>> johnson_lindenstrauss_min_dim(n_samples=1e6, eps=0.5)
663
>>> johnson_lindenstrauss_min_dim(n_samples=1e6, eps=[0.5, 0.1, 0.01])
array([    663,   11841, 1112658])
>>> johnson_lindenstrauss_min_dim(n_samples=[1e4, 1e5, 1e6], eps=0.1)
array([ 7894,  9868, 11841])
前后任意两点$a,b$之间的距离有不等式保证
高斯随机映射 Gaussian random projection

sklearn.random_projection.GaussianRandomProjection 通过将原始输入空间投影在随机生成的矩阵上来降低维度。代码如下:

>>> import numpy as np
>>> from sklearn import random_projection
>>> X = np.random.rand(100, 10000)
>>> transformer = random_projection.GaussianRandomProjection()
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(100, 3947)
稀疏随机映射 Sparse random projection

相比于高斯随机映射,稀疏随机映射会更能保证降维的质量,并带来内存的使用效率和运算效率。

使用方法如下:

>>> import numpy as np
>>> from sklearn import random_projection
>>> X = np.random.rand(100,10000)
>>> transformer = random_projection.SparseRandomProjection()
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(100, 3947)
特征聚集 Feature agglomeration

把那些效果或行为相似的特征起来,达到降维的目的。
利用的是下面的类:

sklearn.cluster.FeatureAgglomeration

由于例子过于复杂,把本方法的使用说明使用说明贴上。

相关文章

  • 用scikit-learn做数据降维

    主成分分析 PCA: principal component analysis 主成分分析是一种简化数据集维数的技...

  • 特征工程

    数据预处理方法 scikit-learn模块 降维模块 Dimensionality reduction (dec...

  • PCA

    PCA降维 一、算法原理 降维算法 还原算法 二、算法实现 三、scikit-learn PCA 四、PCA降噪 ...

  • python机器学习库

    库名功能scikit-learn支持分类、回归、聚类、数据降维、模型选择、数据预处理,提供了一些机器学习方法的接口...

  • scikit-learn

    scikit-learn的基本功能主要被分为六大部分: 分类,回归,聚类,数据降维,模型选择和数据预处理。 是Sc...

  • 主成分分析丨数析学院

    主成分分析是数据科学中常见的降维方法,本节将向大家介绍在 Python 中利用 Scikit-Learn 工具包进...

  • LDA有标签数据降维

    之前无标签数据降维PCA,那么像下图带有标签数据,如果用PCA降维将会投影到v轴上,这个投影方差最大,数据将变成不...

  • 机器学习算法应用中常用技巧-2

    7. 降维-PCA n_components为降到多少维,用原数据fit后,再用transform转换成降维后的数...

  • 基于sklearn的主成分分析

    理论部分 特征降维 特征降维是无监督学习的一种应用:将n维的数据降维为m维的数据(n>m)。可应用于数据压缩等领域...

  • Process finished with exit code

    场景: MNIST(Scikit-Learn)自带的图片识别库,进行降维,使用RBF(高斯相似度)核主成分分析时候...

网友评论

    本文标题:用scikit-learn做数据降维

    本文链接:https://www.haomeiwen.com/subject/imssgttx.html