AI人工智能机器学习之降维和数据压缩

发布于:2025-03-01 ⋅ 阅读:(98) ⋅ 点赞:(0)

1、概要

  本篇学习AI人工智能机器学习之降维和数据压缩,以主成分分析(PCA, Principal Component Analysis)为例,从代码层面讲述机器学习中的降维和数据压缩。

2、降维和数据压缩 - 简介

在机器学习和数据分析中,降维(Decomposition)是一种重要的技术,通常用于减少数据的维度、消除噪声、提高模型的性能以及可视化高维数据。

降维是指将高维数据转换为低维数据的过程, 常用的方法包括:

  • 主成分分析(PCA)
  • 线性判别分析(LDA)
  • t-分布随机邻域嵌入(t-SNE)
  • 核主成分分析(Kernel PCA)
  • 独立成分分析(ICA)

数据压缩是指通过减少数据的冗余和不必要的信息来减小数据文件的大小。数据压缩可以是无损的(不损失信息)或有损的(损失一些信息)。在机器学习中,数据压缩通常是通过降维技术实现的

本篇,以两个示例讲述聚类分析使用方法:

  • 示例1:主成分分析(PCA)对数据降维
  • 示例2:主成分分析(PCA)对数据进行压缩

本篇相关资料代码参见:AI人工智能机器学习相关知识资源及使用的示例代码

3、降维和数据压缩

3.1、安装依赖

python安装机器学习库: pip install scikit-learn

3.2、示例1: 主成分分析(PCA)对数据降维
from sklearn.decomposition import TruncatedSVD, PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

# 加载示例数据
iris = load_iris()
X = iris.data
y = iris.target

# 创建 PCA 模型
pca = PCA(n_components=2)  # n_components:要保留的主成分数量。这里选择前两个主成分
X_reduced = pca.fit_transform(X)

# 可视化结果
plt.figure(figsize=(8, 6))
plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=iris.target, cmap='viridis', edgecolor='k', s=100)
plt.title("PCA of IRIS Dataset")
plt.xlabel("Principal Component 1")
plt.ylabel("Principal Component 2")
plt.grid()
plt.show()

运行上述代码的输出:

在这里插入图片描述

PCA是一种线性降维技术,通过线性组合的数据主成分来解释数据的方差。主要用于简单学习与可视化中数据压缩、简化,但是PCA有一定的局限性,它需要你拥有特定领域的相关知识。对噪音比较多的数据并不适用

3.3、示例2:主成分分析(PCA)对数据进行压缩
from sklearn.decomposition import TruncatedSVD, PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

# 加载示例数据
iris = load_iris()
X = iris.data
y = iris.target

# 使用 PCA 进行数据压缩
pca = PCA(n_components=2)  # 设置主成分数量
X_reduced = pca.fit_transform(X)

# 将压缩后的数据恢复到原始空间(近似)
X_approx = pca.inverse_transform(X_reduced)

# 可视化原始数据与压缩数据
plt.figure(figsize=(12, 6))

plt.subplot(1, 2, 1)
plt.scatter(X[:, 0], X[:, 1], c=iris.target, cmap='viridis', edgecolor='k', s=100)
plt.title("Original Data")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.grid()

plt.subplot(1, 2, 2)
plt.scatter(X_approx[:, 0], X_approx[:, 1], c=iris.target, cmap='viridis', edgecolor='k', s=100)
plt.title("Compressed Data (PCA Approximation)")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.grid()

plt.show()

运行上述代码的输出:

在这里插入图片描述

4、 总结

本篇以主成分分析(PCA, Principal Component Analysis)为例,从代码层面讲述机器学习中的降维和数据压缩。降维旨在提取数据中的重要特征,关注保留尽可能多的原始信息,以便更好地理解和处理数据,通常使用方法如 PCA、LDA、t-SNE 等;数据压缩旨在减小数据的存储空间和传输成本,在某种程度上牺牲信息(如有损压缩),以获得更高的压缩比,可以使用降维方法,但也可以使用其他技术,如编码、量化等。降维可以帮助我们理解数据的结构,而数据压缩可以减小数据规模,提高计算效率,可以利用这些技术都能够在实际应用中提升模型的性能和效果。