前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2021-08-16

2021-08-16

原创
作者头像
Hi0703
修改2021-08-17 10:34:20
3900
修改2021-08-17 10:34:20
举报
文章被收录于专栏:Hi0703Hi0703

最近在搞一个分类项目。

用到了kmeans和pca。

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

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

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

代码语言:javascript
复制
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]

代码语言:javascript
复制
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’时,这个参数才起作用。用于产生随机数。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档