matplotlib可视化PCA后的重建图像及重建误差

代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.datasets import fetch_olivetti_faces

# 加载Olivetti人脸数据集
data = fetch_olivetti_faces()
X = data.data
images = data.images

# 设置不同的PCA组件数
components = [10, 50, 100, 150, 200]
errors = []
h, w = images.shape[1:3]

for n_components in components:
    # 应用PCA
    pca = PCA(n_components=n_components)
    X_pca = pca.fit_transform(X)
    X_reconstructed = pca.inverse_transform(X_pca)

    # 计算重建误差
    error = np.mean((X - X_reconstructed) ** 2)
    errors.append(error)

    # 显示重建的示例图像
    example_reconstructed = X_reconstructed[0].reshape((h, w))
    plt.imshow(example_reconstructed, cmap='gray')
    plt.title(f"Reconstructed Image with {n_components} components")
    plt.show()

# 显示误差图表
plt.figure()
plt.plot(components, errors, marker='o')
plt.xlabel('Number of Components')
plt.ylabel('Reconstruction Error')
plt.title('PCA Reconstruction Error vs. Number of Components')
plt.show()

Matplotlib(plt)函数详解

该代码段展示了如何使用Matplotlib(通常缩写为plt)进行数据可视化。以下是对代码中使用的每个plt函数及其参数的详细解释:

1. imshow()

  • 用途:显示图像。
  • 参数
    • 第一个参数:图像数据,在这个例子中是重建后的图像。
    • cmap='gray':颜色映射,‘gray’ 表示灰度图。
    • 其他参数:如 title 设置图像的标题。

2. title()

  • 用途:为图像设置标题。
  • 参数
    • 第一个参数:字符串,表示标题文本。

3. show()

  • 用途:显示之前用imshow()等函数准备的图像或图表。
  • 参数:无。调用时会将之前准备的所有图像或图表呈现出来。

4. figure()

  • 用途:创建一个新的图表窗口。
  • 参数:可选参数,如图表的大小。

5. plot()

  • 用途:绘制线图。
  • 参数
    • 第一个参数:x轴数据。
    • 第二个参数:y轴数据。
    • marker='o':指定数据点的标记样式,‘o’ 表示圆圈。

6. xlabel()ylabel()

  • 用途:设置x轴和y轴的标签。
  • 参数:轴标签的文本。

7. title()

  • 用途:为整个图表设置标题。
  • 参数:标题文本。

通过以上的plt函数,我们可以对PCA的重建效果进行可视化,并观察不同维度下的重建误差变化。

结果

在这里插入图片描述

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h52013141

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值