在Python的scikit - learn
(sklearn
)库中,PCA
(主成分分析)类提供了方便的接口来实现主成分分析算法。下面为你详细介绍如何使用sklearn
中的PCA
类,包括基本用法、参数设置、示例代码以及结果解释。
基本用法
sklearn
中的PCA
类位于sklearn.decomposition
模块中。使用时,首先需要创建一个PCA
对象,然后调用fit
方法对数据进行拟合,最后使用transform
方法将数据转换到主成分空间。
参数设置
PCA
类的构造函数有一些重要的参数,常见参数如下:
n_components
:指定要保留的主成分数量。可以是整数,表示保留的主成分个数;也可以是浮点数,取值范围在(0, 1]之间,表示保留的主成分的累计方差贡献率。whiten
:布尔值,默认为False
。如果设置为True
,则对转换后的特征进行白化处理,使得每个特征具有相同的方差。
示例代码
以下是一个使用sklearn
中的PCA
进行数据降维的示例代码:
import numpy as np
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 创建PCA对象,指定保留2个主成分
pca = PCA(n_components=2)
# 对数据进行拟合和转换
X_pca = pca.fit_transform(X)
# 输出每个主成分的方差贡献率
print("每个主成分的方差贡献率:", pca.explained_variance_ratio_)
# 绘制降维后的数据
plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
plt.xlabel('第一主成分')
plt.ylabel('第二主成分')
plt.title('PCA降维后的鸢尾花数据集')
plt.show()
代码解释
- 数据加载:使用
load_iris
函数加载鸢尾花数据集,将特征数据存储在X
中,标签数据存储在y
中。 - 创建PCA对象:使用
PCA(n_components = 2)
创建一个PCA
对象,指定保留2个主成分。 - 拟合和转换:调用
fit_transform
方法对数据进行拟合和转换,将原始数据转换到主成分空间,得到降维后的数据X_pca
。 - 方差贡献率:通过
pca.explained_variance_ratio_
属性可以查看每个主成分的方差贡献率,方差贡献率越高,说明该主成分包含的原始数据信息越多。 - 可视化:使用
matplotlib
库将降维后的数据进行可视化,不同颜色的点表示不同类别的鸢尾花。
结果解释
- 方差贡献率:
explained_variance_ratio_
输出的是每个主成分的方差贡献率,例如[0.92461621 0.05301557]
,表示第一个主成分保留了约92.46%的原始数据信息,第二个主成分保留了约5.30%的信息,两者累计保留了约97.76%的信息。 - 可视化结果:通过降维后的数据可视化,可以更直观地观察数据的分布和类别之间的区分度。在鸢尾花数据集的例子中,可以看到不同类别的鸢尾花在主成分空间中具有一定的可分性。
注意:本文归作者所有,未经作者允许,不得转载