调用格式:
PCA(n_components=None, *, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', random_state=None)
说明:利用数据的奇异值分解将其投射到较低维空间的线性降维。在应用SVD之前,输入数据是中心化后的,但没有针对每个特征进行缩放。
参数含义
1、n_components,int, float, None or str
要保留的主成分。
1)if n_components is not set all components are kept:n_components == min(n_samples, n_features)
2)the None case results in:n_components == min(n_samples, n_features) - 1
2、copy,bool, 默认default=True
If False, 传递到fit的数据会被覆盖,运行fit(X).transform(X)将不会产生预期的结果,使用fit_transform(X)代替。
3、whiten,bool, optional (default False)
当为真(默认为假)时,components_向量乘以n_samples的平方根,然后除以奇异值,以确保输出与单位分量方差不相关。
所谓白化,就是对降维后的数据的每个特征进行标准化,让方差都为1。对于PCA降维本身来说,一般不需要白化。如果你PCA降维后有后续的数据处理动作,可以考虑白化。默认值是False,即不进行白化。
属性
1、components_:array, shape (n_components, n_features)
特征空间的主轴,表示数据中方差最大的方向。样本按explained_variance_排序。
2、explained_variance_:array, shape (n_components,)
所选择的每个分量所解释的方差量。等于X的协方差矩阵的n个最大特征值。
3、explained_variance_ratio_:array, shape (n_components,)
所选择的每个组成部分所解释的方差百分比。如果没有设置n_components,那么将存储所有主成分,并且比率的总和等于1.0。
4、n_features_:int,训练数据中的特征数。
5、n_samples_:int,训练数据中的样本数。
6、n_components_:int,估计的主成分数量。
方法
方法 | 说明 |
---|---|
fit(X[, y]) | 用X拟合模型。 |
fit_transform(X[, y]) | 用X拟合模型,对X进行降维。 |
get_covariance() | 用生成模型计算数据协方差。 |
get_params([deep]) | 获取这个估计器的参数。 |
get_precision() | 利用生成模型计算数据精度矩阵。 |
inverse_transform(X) | 将数据转换回其原始空间。 |
score(X[, y]) | 返回所有样本的平均对数似然值。 |
score_samples(X) | 返回每个样本的对数似然值。 |
set_params(**params) | 设置这个估计器的参数。 |
transform(X) | 对X应用维数约简。 |
.fit()
fit(X, y=None)
用X拟合模型
返回值为实例本身:Returns the instance itself.
.fit_transform()
fit_transform(self, X, y=None)
用X拟合模型,对X进行降维。
.get_covariance()
get_covariance()
用生成模型计算数据协方差。
.get_param()
get_params(deep=True)
利用生成模型计算数据精度矩阵。等于协方差的逆,但为了效率,用矩阵逆引理计算。
.inverse_transform()
inverse_transform(X)
将数据转换回其原始空间。换句话说,返回一个转换为X的输入X_original。
.transform()
transform(X)
对X应用维数约简。X被投影到之前从训练集中提取的第一个主成分上。
示例代码
>>> 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)
>>> pca.fit(X)
PCA(n_components=2)
>>> print(pca.explained_variance_ratio_)
[0.9924... 0.0075...]
>>> print(pca.singular_values_)
[6.30061... 0.54980...]