IIWAB PCA算法 - IIWAB

PCA算法

IIWAB 1月前 ⋅ 86 阅读

在Python的scikit - learnsklearn)库中,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()

代码解释

  1. 数据加载:使用load_iris函数加载鸢尾花数据集,将特征数据存储在X中,标签数据存储在y中。
  2. 创建PCA对象:使用PCA(n_components = 2)创建一个PCA对象,指定保留2个主成分。
  3. 拟合和转换:调用fit_transform方法对数据进行拟合和转换,将原始数据转换到主成分空间,得到降维后的数据X_pca
  4. 方差贡献率:通过pca.explained_variance_ratio_属性可以查看每个主成分的方差贡献率,方差贡献率越高,说明该主成分包含的原始数据信息越多。
  5. 可视化:使用matplotlib库将降维后的数据进行可视化,不同颜色的点表示不同类别的鸢尾花。

结果解释

  • 方差贡献率explained_variance_ratio_输出的是每个主成分的方差贡献率,例如[0.92461621 0.05301557],表示第一个主成分保留了约92.46%的原始数据信息,第二个主成分保留了约5.30%的信息,两者累计保留了约97.76%的信息。
  • 可视化结果:通过降维后的数据可视化,可以更直观地观察数据的分布和类别之间的区分度。在鸢尾花数据集的例子中,可以看到不同类别的鸢尾花在主成分空间中具有一定的可分性。

全部评论: 0

    我有话说: