什么是 PCA?

PCA(Principal Component Analysis, 主成分分析)是一种常用的数据降维技术。它通过找到一组新的互不相关的正交轴(主成分),将高维数据映射到低维空间。这些新轴是按照数据的方差大小排列的,首个主成分捕获了数据中最大的信息量,其后的每个主成分依次捕获了剩余数据中最大的信息量。

PCA 的主要目标有以下几个:

  1. 降维:在保持数据主要信息的情况下,减少数据的维度,减少数据的复杂性和冗余。
  2. 特征提取:将原始特征映射到新的特征空间,使新特征能够更好地描述数据。
  3. 噪声消除:降低数据维度的同时,可以消除高维数据中的噪声。

PCA 的贡献率是什么?

PCA 的每个主成分(Principal Component)都代表了原始数据中某一部分的方差,贡献率是指某个主成分所解释的方差占数据总方差的比例。公式如下:

贡献率=主成分的方差比上数据总方差

贡献率越高,表示该主成分包含的数据信息越多。因此,我们可以使用前几个主成分来代替原始的所有特征,以减少数据维度。

PCA 的贡献率有以下几个特点:

  • 累积贡献率:前 k 个主成分的贡献率之和,被称为累积贡献率。它衡量的是前 k 个主成分能够解释的数据方差比例。通常,我们希望累积贡献率能够达到 90% 或更高,以确保在降维的同时保留大部分信息。

  • 排序规则:PCA 的主成分是按照贡献率从大到小排序的。第一个主成分拥有最高的贡献率,接下来每个主成分的贡献率依次递减。

如何计算 PCA 的贡献率?

在 Python 中,我们可以使用 sklearn 库中的 PCA 模块来计算贡献率。以下是一个简单的代码示例:

import numpy as np
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

# 假设有一个 10 个样本、5 个特征的示例数据
data = np.random.randn(10, 5)

# 数据标准化
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)

# 使用 PCA
pca = PCA(n_components=5)
pca.fit(data_scaled)

# 获取每个主成分的贡献率
explained_variance_ratio = pca.explained_variance_ratio_

# 输出贡献率
for i, ratio in enumerate(explained_variance_ratio):
    print(f"主成分 {i + 1} 的贡献率: {ratio:.4f}")

# 输出总贡献率
cumulative_variance = np.cumsum(explained_variance_ratio)
print(f"总贡献率: {sum(explained_variance_ratio):.2f}")

输出结果

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部