数据降维方法:PCA

发布于:2025-07-17 ⋅ 阅读:(13) ⋅ 点赞:(0)

数据降维方法

PCA

**主成分分析(Principal Component Analysis,PCA)**是一种常用的数据降维方法。它通过线性变换将原始数据变换到一个新的坐标系中,使得第一个坐标(第一主成分)具有最大的方差,第二个坐标(第二主成分)具有次大的方差,以此类推。PCA的目的是从高维数据中提取出最重要的特征,通过保留最重要的主成分来实现数据的降维,同时尽可能保留原始数据的结构。

PCA算法

  1. 数据标准化

为了消除不同特征之间的量纲影响,通常需要对数据进行标准化处理,使得每个特征的均值为0,标准差为1。

标准化公式:
x ′ = x − μ σ , x' = \frac{x - \mu}{\sigma}, x=σxμ,
其中 μ \mu μ为特征均值, σ \sigma σ为特征标准差。

  1. 计算协方差矩阵

协方差矩阵描述了数据特征之间的相关性。对于标准化后的数据,协方差矩阵可以通过计算特征之间的协方差得到。

协方差公式:
c o v ( X , Y ) = 1 n − 1 ∑ i = 1 n ( X i − μ X ) ( Y i − μ Y ) , cov(X,Y) = \frac{1}{n-1}\sum_{i=1}^{n}(X_i - \mu_X)(Y_i - \mu_Y), cov(X,Y)=n11i=1n(XiμX)(YiμY)
标准化后简化为特征向量的内积平均。

  1. 计算特征值和特征向量

求解协方差矩阵的特征值和对应的特征向量。特征值表示对应特征向量方向上的数据方差大小,特征向量给出了数据的主要分布方向(即主成分)。

  1. 选择主成分

根据特征值的大小,选择前 k k k个最大的特征值对应的特征向量,这些特征向量构成了新的 k k k维特征空间。特征值的累计贡献率(如前 k k k个特征值之和占总特征值之和的比例)通常作为选择 k k k的依据(如累计贡献率≥85%)。

  1. 变换数据

将原始数据投影到新的特征空间中,得到降维后的数据。投影过程通过原始数据矩阵与选定的特征向量矩阵相乘实现。

代码展示

import pandas as pd
from sklearn import datasets

# 加载鸢尾花数据集
iris = datasets.load_iris()

# 将数据集转换为DataFrame
iris_df = pd.DataFrame(
    data=iris.data,  # 特征数据
    columns=iris.feature_names  # 特征名称
)

iris_df.info()

iris.data_std = (iris.data - iris.data.mean(axis=0)) / iris.data.std(axis=0)

from sklearn.decomposition import PCA
 
# 设置PCA参数,这里我们选择保留90%的方差
pca = PCA(n_components=0.9)
iris.data_pca = pca.fit_transform(iris.data_std)

# 可视化原始数据和降维后的数据
import matplotlib.pyplot as plt


plt.figure(figsize=(12, 6))
plt.scatter(iris.data[:, 0], iris.data[:, 1], c=iris.target, edgecolor='k', alpha=0.7)
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('Original Data')
plt.show()




plt.figure(figsize=(12, 6));
plt.scatter(iris.data_pca[:, 0], iris.data_pca[:, 1], c=iris.target, edgecolor='k', alpha=0.7)
plt.xlabel('First Principal Component')
plt.ylabel('Second Principal Component')
plt.title('Data after PCA')
plt.show()


网站公告

今日签到

点亮在社区的每一天
去签到