原创

2021-08-16

最近在搞一个分类项目。

用到了kmeans和pca。

之前都是网上找的实现代码,用起来比较麻烦,代码也多。

后来发现用sklearn就有现成的pca和kmeans。

pca的代码和主要参数解释。[原文链接:https://blog.csdn.net/qq_20135597/article/details/95247381]

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。[原文链接:https://blog.csdn.net/qq7835144/article/details/103436685]

class sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver=‘auto’, tol=0.0, iterated_power=‘auto’, random_state=None)

参数:

n-components:int, float, None or st:指定PCA降维后的特征维度数目。

默认值为min(样本数,特征数)。之所以不能小于样本数是因为前面已经说明输入数据不是稀疏的。

如果 n_components设为 ‘mle’ ,svd_solver 设为 ‘full’, 则使用Minka’s MLE方法来估计降维后特征的维度。如果svd_solver设为’auto’,则自动将svd_solver设为’full’。这里使用最大似然估计的方法来得到降维后的维度, 实际上是Probabilistic PCA,简称PPCA,可以参考 https://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_fa_model_selection.html#sphx-glr-auto-examples-decomposition-plot-pca-vs-fa-model-selection-py

如果n_components设为大于0小于1的小数且svd_solver设为’full’,则自动根据样本特征方差来决定降维到的维度数,这里n_components表示主成分的方差和所占的最小比例阈值。

如果svd_solver = ‘arpack’, n_components 必须严格地小于min(样本数,特征数),此时n_components默认为min(样本数,特征数) - 1。

copy:copybool, default=True:如果设为False,原输入数据会被新的结果覆盖掉,使用默认的True就可以。

whiten: bool, optional (default False):白化会去除变换信号中的一些信息(分量的相对方差尺度),但在数据有比较强的相关性的假设下,有时可以提高下游估计器的性能。

svd_solver:str {‘auto’, ‘full’, ‘arpack’, ‘randomized’}:SVD求解方法。之所以提供这么多方法,一定是在计算时间和精确度上有区别,不过我没有详细研究。

如果设为’auto’,则自动选择求解方法。当输入数据大于500*500且提取的主成分小于80%,则使用更有效率的’randomized’方法,否则将使用精确的SVD方法,即’full’。

如果设为’full’,则使用scipy.linalg.svd来计算SVD分解。

如果设为’arpack’,则使用scipy.sparse.linalg.svds计算SVD分解。这种方法严格要求 0 < n_components < min(样本数,特征数)。

如果设为’randomized’,则使用Halko等人提出的随机SVD方法。

tol:float >= 0, optional (default .0):当svd_solver = ‘arpack’,用来设置奇异值的容忍度。(我觉得应该类似于收敛门限这一类的参数)

iterated_power:int >= 0, or ‘auto’, (default ‘auto’):当svd_solver = ‘randomized’,用来设置计算功率法的迭代次数。

random_state:int, RandomState instance or None, optional (default None):当svd_solver = ‘arpack’或者svd_solver = ‘randomized’时,这个参数才起作用。用于产生随机数。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2021-08-16 Vue2中使用eslint+prettier+webstorm

    Webstorm+vue+eslint+prettier融合问题 - 迷思雨 - 无道 (misiyu.cn)

    无道
  • 【Rust日报】2021-08-16 如何写出高效的 Rust 代码

    作者写了 <<如何写出非常慢的 Rust 代码>> 之后, 收到了很多反馈, 这些反馈提供了非常多的意见来改进代码, 让代码变的更高效. 作者给出了很多编写高效...

    MikeLoveRust
  • 2021-08-16:回文对。给定一组 互不相同 的单词, 找出所

    2021-08-16:回文对。给定一组 互不相同 的单词, 找出所有 不同 的索引对 (i, j),使得列表中的两个单词, wordsi + wordsj ,可...

    福大大架构师每日一题
  • 2021-08-16:回文对。给定一组 互不相同 的单词, 找出所有 不同 的索引对 (i, j),使得列表中的两个单词, wo

    2021-08-16:回文对。给定一组 互不相同 的单词, 找出所有 不同 的索引对 (i, j),使得列表中的两个单词, words[i] + words[j...

    福大大架构师每日一题
  • Doris报错:ERROR 1064 (HY000)

    今天遇到一次错误: ERROR 1064 (HY000): errCode = 2, detailMessage = Failed to get scan r...

    程裕强
  • LGWR waits for event ‘DLM cross inst call completion’ 故障排除

    客户一套Oracle 19c Dataguard的数据库环境,Standby端总是会间隔性出现较大GAP,同时DB alert log日志出现LGWR (osp...

    数据和云
  • 云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从0到1使用Golang开发生产级麻将游戏服务器—第5篇

    这将是一个完整的,完全践行 DevOps/GitOps 与 Kubernetes 上云流程的 Golang 游戏服务器开发的系列教程。

    为少
  • Elasticsearch 日志监控方案

    现在大部分公司都会选择将应用、中间件、系统等日志存储在 Elasticsearch 中,如何发现日志中的异常数据并且及时告警通知就显得十分重要。本文将会介绍两种...

    Se7en258
  • AKShare-股票数据-技术选股-险资举牌

    技术指标分析,是依据一定的数理统计方法,运用一些复杂的计算公式,来判断汇率走势的量化的分析方法。主要有动量指标、相对强弱指数、随机指数等等。

    数据科学实战
  • cuDNN installation

    NVIDIA cuDNNis a GPU-accelerated library of primitives for deep neural networks.

    vanguard
  • Gzip 的一个坑

    我们的项目里为了方便部署,swagger 文档是通过 gzip 压缩后,被植入到程序里的。其实这个思路源自于 gRPC ProtoBuf fileDescrip...

    poslua
  • Kubernetes v1.15.3 证书过期更新

    问题关键字:x509: certificate has expired or is not yet valid

    欧巴云
  • 推荐52个堪称神器的学习网站,每天坚持一小时,让你受益一生【上】

    本篇文章分为上下篇,给大家整理了一些终身受益,堪称神器的学习网站,什么行业的学习网站都有,推荐给大家,里面都是满满的干货,我就不过多介绍了,大家自行探索。

    憨憨默默成神
  • MySQL Case-MySQL表碎片整理方法

    做为Oracle DBA在日常的数据库维护中,在给客户制定维护方案时,都会有降低高水位此类的建议

    姚崇
  • AKShare-股票数据-调查平均持仓

    持仓调查的数据是市场参与者心理、行为表现的结果。市场行为会因为交易规则、政策面消息、媒体噪声等因素的变化而变化。若排除以上因素,在稳定、可重复的博弈环境下,市场...

    数据科学实战
  • ClickHouse 如何查询指定时间段内导入的数据

    实现ClickHouse 全量和增量的导入和ClickHouse 和迁移ClickHouse

    jasong
  • 国产数据库|TiDB 5.0 快速体验

    TiDB 是平凯星辰 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactio...

    JiekeXu之路
  • K8s设置Master可调度与不可调度

    院长技术
  • FreeSwitch:send_dtmf/uuid_send_dtmf发送按键注意事项

    很多时候我们打电话到公司前台,会听到类似“欢迎致电XXX,办公电话请直拨分机,咨询XX请按1,咨询YY请按2”这样的语音提示。在一些特定流程中,系统自动发起呼叫...

    菩提树下的杨过

扫码关注云+社区

领取腾讯云代金券