【python】sklearn中PCA的使用方法

【python】sklearn中PCA的使用方法fromsklearn.decompositionimportPCAPCA主成分分析(PrincipalComponentsAnalysis),简称PCA,是一种数据降维技术,用于数据预处理。PCA的一般步骤是:先对原始数据零均值化,然后求协方差矩阵,接着对协方差矩阵求特征向量和特征值,这些特征向量组成了新的特征空间。sklearn.decomposition.PC…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

from sklearn.decomposition import PCA

PCA

主成分分析(Principal Components Analysis),简称PCA,是一种数据降维技术,用于数据预处理。

PCA的一般步骤是:先对原始数据零均值化,然后求协方差矩阵,接着对协方差矩阵求特征向量和特征值,这些特征向量组成了新的特征空间。

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

参数:

n_components:  

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

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

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

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

copy:

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

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

whiten:

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

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

PCA属性:

  • components_ :返回具有最大方差的成分。
  • explained_variance_ratio_:返回 所保留的n个成分各自的方差百分比。
  • n_components_:返回所保留的成分个数n。
  • mean_
  • noise_variance_:

PCA方法:

1、fit(X,y=None)

fit(X),表示用数据X训练PCA模型。

函数返回值:调用fit方法的对象本身。比如pca.fit(X),表示用X对pca这个对象进行训练

拓展:fit()可以说是scikit-learn中通用的方法,每个需要训练的算法都会有fit()方法,它其实就是算法中的“训练”这一步骤。因为PCA是无监督学习算法,此处y自然等于None。

2、fit_transform(X)

用X来训练PCA模型,同时返回降维后的数据。

newX=pca.fit_transform(X),newX就是降维后的数据。

3、inverse_transform()

将降维后的数据转换成原始数据,X=pca.inverse_transform(newX)

4、transform(X)

将数据X转换成降维后的数据。当模型训练好后,对于新输入的数据,都可以用transform方法来降维。

此外,还有get_covariance()、get_precision()、get_params(deep=True)、score(X, y=None)等方法,以后用到再补充吧。

实例:

import numpy as np
from sklearn.decomposition import PCA
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
pca = PCA(n_components=2)
newX = pca.fit_transform(X)     #等价于pca.fit(X) pca.transform(X)
invX = pca.inverse_transform(newX)  #将降维后的数据转换成原始数据
print(X)
    [[-1 -1]
     [-2 -1]
     [-3 -2]
     [ 1  1]
     [ 2  1]
     [ 3  2]]
print(newX)
    array([[ 1.38340578,  0.2935787 ],
           [ 2.22189802, -0.25133484],
           [ 3.6053038 ,  0.04224385],
           [-1.38340578, -0.2935787 ],
           [-2.22189802,  0.25133484],
           [-3.6053038 , -0.04224385]])
print(invX)
    [[-1 -1]
     [-2 -1]
     [-3 -2]
     [ 1  1]
     [ 2  1]
     [ 3  2]]
print(pca.explained_variance_ratio_)
    [ 0.99244289  0.00755711]

我们所训练的pca对象的n_components值为2,即保留2个特征,第一个特征占所有特征的方差百分比为0.99244289,意味着几乎保留了所有的信息。即第一个特征可以99.24%表达整个数据集,因此我们可以降到1维:

pca = PCA(n_components=1)
newX = pca.fit_transform(X)
print(pca.explained_variance_ratio_)
[ 0.99244289]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180750.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux查看80端口占用情况_netstat查看端口linux

    linux查看80端口占用情况_netstat查看端口linux前言平常使用linux,我们经常需要查看哪个服务占用了哪个端口,接下来就为大家介绍了2种Linux查看端口占用情况可以使用lsof和netstat命令。1.lsof-i:端口号用

    2022年7月31日
    4
  • app弱网测试的方法(测试自己声音类型app)

    一,弱网场景简介当前APP网络环境比较复杂,网络制式有2G、3G、4G网络,还有越来越多的公共Wi-Fi。不同的网络环境和网络制式的差异,都会对用户使用app造成一定影响。另外,骑士使用我们产品的场景多变,如进入地下美食城、进电梯,进各种写字楼,居民楼等,使得弱网测试显得尤为重要。如果app没有对各种网络异常进行兼容处理,那么骑士在进行正常的业务履单操作时可能遇到APP闪退、ANR、数据丢失等问题。二,弱网测试介绍什么样的网络属于弱网?低于2G速率的时候都属于弱网,3G也可划分为弱网,一般Wi-

    2022年4月17日
    89
  • matlab在极坐标中绘图y=sin(6x)_极坐标中θ范围怎么求

    matlab在极坐标中绘图y=sin(6x)_极坐标中θ范围怎么求在极坐标中绘图TryThisExampleTryThisExampleTryThisExampleTryThisExampleTryThisExampleTryThi

    2022年8月5日
    0
  • PAT乙级题目索引(题目+解析+AC代码)

    PAT乙级题目索引(题目+解析+AC代码)题目信息 分值 PAT乙级1001害死人不偿命的(3n+1)猜想 15 PAT乙级1002写出这个数 20 PAT乙级1003我要通过! 20 PAT乙级1004成绩排名 20 PAT乙级1005继续(3n+1)猜想 25 PAT乙级1006换个格式输出整数 15 PAT乙级1007素数…

    2022年4月29日
    40
  • 20款优秀的免费代码编辑器

    20款优秀的免费代码编辑器Atom.io(Win7、Win8、OSX10.8、Linux)免费GitHub开发的文本编辑器Atom发布了0.177.0版,其中一个引入注目的变化是从Node.js切换到了io.js。io.js是Node.js的分支,Node.js社区发生分裂后由核心开发者在2014年12月创建的,已经发布了v1.1版,目前开发非常活跃。Atom是切换到io.js的一个重量级项目。At

    2022年6月15日
    68
  • python命名规则标识符_python中有效的标识符

    python命名规则标识符_python中有效的标识符标识符规则1、由大小写字母、数字和下划线组成,只能以字母或者下划线开头。2、不能高阔除下划线以外的其他热河字符,如%……%¥#@3、不能包含换行符、空格和制表符等空白字符。4、不能使用Python中的关键字和约定俗成的名称,如print5、Python区分大小写。…

    2022年9月9日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号