在介绍n_components参数之前,首先贴一篇PCA参数详解的文章:http://www.cnblogs.com/akrusher/articles/6442549.html

  按照文章中对于n_components的介绍,我对一个1000x9000的array进行了主成分分析,n_components选择为"mle“,即自动选择(因为刚接触PCA,并不知道咋设置( ˇˍˇ )),尝试几次,每次都会报出下面的错误.

  百思不得其解,终于通过阅读源码找到了原因。

就是因为svd_solver同样设置为了自动选择‘auto’,而它在选择的过程中,需要比较n_components,1,0.8*min(X.shape)的大小关系,所以会报错,所以n_components该如何设置?

n_components的设置与参数svd_solver的设置是相关联的,而它们的设置又都跟输入数据x的维度相关,通过阅读源码和说明文档总结如下。

  svd_solver的设置有四种情况:'auto','fill','arpack','randomized',自动选择  'auto'的选择机制如下: x.shape>500 并且 1<=n_components<0.8*min(x.shape)时,svd_solver=‘randomsize',否则,svd_solver=’full‘。

  n_components是要保留的成分,int 或者 string,缺省时默认为None,所有成分被保留,但是这三种设置并不适用于所有情况,下面的表格说明了两个参数之间的关联:

表格说明了n_components设置为‘mle’或整数时需要满足的条件,其中,“No”表示不能设置为该值。所以我们看到,只有输入数据的样本数多于特征数,并且svd_solver设置为‘full'时,才可以将n_components设置为’mle';同时注意当svd_solve设置为‘arpack’时,保留的成分必须少于特征数,即不能保留所有成分。另外,当n_components缺省时,所有成分被保留,最终保留的成分数为min(sample,features),原理在这里不做说明。

python sklearn PCA源码阅读:参数n_components的设置(设为‘mle’出错的原因)的更多相关文章

  1. SpringMVC源码阅读:Controller中参数解析

    1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring ...

  2. kubernetes源码阅读及编译

    kubernetes源码阅读 工欲善其事,必先利其器.在阅读kubernetes源码时,我也先后使用过多个IDE,最终还是停留在IDEA上. 我惯用的是pycharm(IDEA的python IDE版 ...

  3. vnpy源码阅读学习(1):准备工作

    vnpy源码阅读学习 目标 通过阅读vnpy,学习量化交易系统的一些设计思路和理念. 通过阅读vnpy学习python项目开发的一些技巧和范式 通过vnpy的设计,可以用python复现一个小型简单的 ...

  4. python3 源码阅读-虚拟机运行原理

    阅读源码版本python 3.8.3 参考书籍<<Python源码剖析>> 参考书籍<<Python学习手册 第4版>> 官网文档目录介绍 Doc目录主 ...

  5. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  6. 【原】FMDB源码阅读(二)

    [原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...

  7. 【原】FMDB源码阅读(一)

    [原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...

  8. 【原】AFNetworking源码阅读(六)

    [原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AF ...

  9. 【原】AFNetworking源码阅读(五)

    [原]AFNetworking源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中提及到了Multipart Request的构建方法- [AFHTTP ...

随机推荐

  1. javascript设计模式——享元模式

    前面的话 享元(flyweight)模式是一种用于性能优化的模式,“fly”在这里是苍蝇的意思,意为蝇量级.享元模式的核心是运用共享技术来有效支持大量细粒度的对象.如果系统中因为创建了大量类似的对象而 ...

  2. 人工智能二:TensorFlow环境搭建

    一.Windows下安装虚拟机VMware Workstation,在虚拟机中安装Ubuntu(要善用搜索引擎,解决各类简单问题) VMware Workstation下载地址:http://www. ...

  3. JS 获取上传文件的内容

    <div> 上传文件 : <input type="file" name = "file" id = "fileId" / ...

  4. mongoDB之数据库操作

    mongoDB中的数据库操作 查看数据库名称: db 查看所有数据库: show dbs 切换数据库: use 数据库名称 注意:如果数据库不存在,则指向数据库,但不会创建.直到插入数据或者是创建集合 ...

  5. window.setInterval与window.setTimeout使用实例

    <script type="text/javascript"> var arrived = false; var num = 0; var timer = window ...

  6. sphinx+reStructuredText制作文档

    1 spinx简介 Sphinx 是一种文档工具,它可以令人轻松的撰写出清晰且优美的文档, 由 Georg Brandl 在BSD 许可证下开发. 新版的Python文档 就是由Sphinx生成的,并 ...

  7. 做ppt经常使用站点

    推荐一下做PPT经常使用的站点 一.字体 http://font.chinaz.com 二.ppt模板:演界网 三.图标 http://www.easyicon.net/

  8. Android 当打开“开发人员模式”中的“不保留活动”后,程序应当怎么保持正常执行

    Android 当打开"开发人员模式"中的"不保留活动"后,程序应当怎么保持正常执行咧. .? 在这几天,我一直在纠结这个问题.从发现,程序出现这个问题,是由于 ...

  9. SYSAUX表空间使用率高问题处理

    SYSAUX表空间做为SYSTEM表空间的辅助表空间,主要存放EM相关的内容以及表统计信息,AWR快照,审计信息等,而假设SYSAUX表空间在默认条件下你假设不做不论什么配置,随着时间的推移.会膨胀的 ...

  10. 用泛型创建SqlServerHelper类实现增删改查(一)

    使用泛型,可以构建对数据库单表的基本增删改查. 首先有一数据库 Test_SqlServerHelper ,有2表 接下来创建项目,对数据库进行增删改查. 直接贴代码:(SqlServerHelper ...