当前位置: 首页 > wzjs >正文

口碑好的购物网站建设公司开发设计推荐

口碑好的购物网站建设,公司开发设计推荐,长沙长沙网站建设公司,上海网站建设市场分析第8集:降维技术——主成分分析(PCA) 在机器学习中,降维(Dimensionality Reduction) 是一种重要的数据处理技术,用于减少特征维度、去除噪声并提高模型效率。主成分分析(Principal C…

第8集:降维技术——主成分分析(PCA)

在机器学习中,降维(Dimensionality Reduction) 是一种重要的数据处理技术,用于减少特征维度、去除噪声并提高模型效率。主成分分析(Principal Component Analysis, PCA) 是最经典的线性降维方法之一,广泛应用于数据可视化、特征提取和图像压缩等领域。今天我们将深入探讨 PCA 的数学原理,并通过实践部分使用 MNIST 手写数字数据集 进行降维与可视化。


维度灾难问题

什么是维度灾难?

随着特征维度的增加,数据的稀疏性会急剧上升,导致模型训练变得更加困难。这种现象被称为 维度灾难(Curse of Dimensionality)。高维数据不仅增加了计算复杂度,还可能导致过拟合。因此,降维技术成为解决这一问题的重要工具。

图1:维度灾难示意图
(图片描述:三维空间中展示了低维数据点的分布较为密集,而高维空间中数据点变得稀疏,难以捕捉模式。)
在这里插入图片描述


PCA 的数学原理

PCA 的核心思想

PCA 的目标是通过线性变换将原始高维数据投影到一个低维子空间,同时尽可能保留数据的主要信息。具体步骤如下:

  1. 标准化数据:对每个特征进行零均值化和单位方差缩放。
  2. 计算协方差矩阵:衡量特征之间的相关性。
  3. 特征分解:求解协方差矩阵的特征值和特征向量。
  4. 选择主成分:按特征值大小排序,选择前 $ k $ 个特征向量作为主成分。
  5. 投影数据:将原始数据投影到主成分构成的低维空间。

公式如下:
Covariance Matrix:  Σ = 1 n X T X \text{Covariance Matrix: } \Sigma = \frac{1}{n} X^T X Covariance Matrix: Σ=n1XTX
Eigen Decomposition:  Σ v = λ v \text{Eigen Decomposition: } \Sigma v = \lambda v Eigen Decomposition: Σv=λv
其中:

  • $ \Sigma $ 是协方差矩阵。
  • $ \lambda $ 是特征值,表示主成分的重要性。
  • $ v $ 是特征向量,表示主成分的方向。

如何解释主成分

主成分是数据变化方向的线性组合,每个主成分解释了数据总方差的一部分。我们可以通过以下指标评估主成分的重要性:

  1. 特征值占比:每个主成分对应的特征值占总特征值的比例。
  2. 累计贡献率:前 k 个主成分解释的总方差比例。

图2:主成分累计贡献率图
(图片描述:折线图展示了前 $ k $ 个主成分的累计贡献率,随着主成分数量增加,累计贡献率逐渐接近 100%。)
在这里插入图片描述


PCA 在图像压缩中的应用

PCA 可以用于图像压缩,通过保留最重要的主成分来减少存储空间。例如,对于一张灰度图像,可以将其像素矩阵展平为一维向量,然后使用 PCA 提取主要特征,从而实现压缩。


实践部分:使用 PCA 对 MNIST 手写数字数据集进行降维并可视化

数据集简介

MNIST 数据集包含 70,000 张 28x28 像素的手写数字图像(0-9)。每张图像被展平为 784 维向量。我们将使用 PCA 将数据降维到二维空间,并对其进行可视化。

完整代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_openml
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler# 加载 MNIST 数据集
mnist = fetch_openml('mnist_784', version=1)
X, y = mnist['data'], mnist['target']# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# 使用 PCA 降维到二维
pca = PCA(n_components=2, random_state=42)
X_pca = pca.fit_transform(X_scaled)# 可视化降维结果
plt.figure(figsize=(12, 8))
for i in range(10):  # 遍历 0-9 数字类别plt.scatter(X_pca[y.astype(int) == i, 0], X_pca[y.astype(int) == i, 1], label=f'Digit {i}', alpha=0.6)
plt.title('MNIST Data Visualization using PCA', fontsize=16)
plt.xlabel('Principal Component 1', fontsize=12)
plt.ylabel('Principal Component 2', fontsize=12)
plt.legend()
plt.grid()
plt.show()# 输出主成分的累计贡献率
explained_variance_ratio = pca.explained_variance_ratio_
print(f"主成分1解释的方差比例: {explained_variance_ratio[0]:.2f}")
print(f"主成分2解释的方差比例: {explained_variance_ratio[1]:.2f}")
print(f"累计贡献率: {sum(explained_variance_ratio):.2f}")

运行结果

降维结果可视化

图3:PCA 降维后的 MNIST 数据分布
(图片描述:二维散点图展示了不同数字类别的分布情况,每个类别用不同颜色表示,清晰地展示了数字之间的聚类效果。)
在这里插入图片描述

输出结果
主成分1解释的方差比例: 0.06
主成分2解释的方差比例: 0.04
累计贡献率: 0.10

总结

本文介绍了 PCA 的数学原理及其在降维和图像压缩中的应用,并通过实践部分展示了如何使用 PCA 对 MNIST 数据集进行降维和可视化。希望这篇文章能帮助你更好地理解 PCA!


参考资料

  • Scikit-learn 文档: https://scikit-learn.org/stable/documentation.html
  • MNIST 数据集: https://www.openml.org/d/554*
http://www.dtcms.com/wzjs/816085.html

相关文章:

  • 网站建设与维护视频教程哪个网站虚拟主机好
  • 做网站用哪个服务器做百度推广需要什么条件
  • 北京做网站的开发公司装修论坛网站有哪些
  • 太原住房和城乡建设部网站制作文字图片
  • 长沙做网站设计的公司论述简述网站制作的步骤
  • 门户网站建设要求网站内的搜索怎么做的
  • 天津河北做网站的公司排名教人做甜品的网站
  • 建设银行论坛网站网站建设价格如何
  • 河北省建设执业注册中心网站在线app
  • 网站空间免费 优帮云线上商城怎么开
  • 简洁的网站案例侨联网站建设方案
  • 中联建设集团股份有限公司网站物流网站建设规划书
  • 中国上海门户网站沧州市网站建设
  • 热门课程自己做网站凡科网是做什么的
  • 国外网站源码怎么做 社区网站
  • 网站建设 php 企业网站宁乡网站建设点燃网络
  • wordpress弹幕主题做360手机网站优化
  • 自学建百度首页网站wordpress移动显示
  • 网站在阿里云备案流程企业形象宣传策划方案
  • 手机网站头部代码网页设计实训报告总结与收获
  • 网站安全优化wordpress侧边栏缩略图
  • 用asp做网站需要准备什么免费3d建模软件
  • 房地产网站 模板中国对外建设有限公司网站
  • 网站建设需要掌握什么技术又拍云wordpress
  • 大型集团网站大型网站建设服务公司
  • 各大门户网站dede和wordpress
  • 普洱建设网站网站开发用php好吗
  • 免费网站制作开发公司莱芜网站建设价格低
  • 济宁 做网站织梦网站怎么做404页面模板
  • 专业网站建设信息wordpress多用户插件