gpt4 book ai didi

python - 将 PCA 应用于一个样本

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:08 25 4
gpt4 key购买 nike

我目前正在使用机器学习进行图像识别项目。

  • 训练集有 1600 张尺寸为 300x300 的图像,因此每张图像有 90000 个特征。
  • 为了加快训练速度,我使用 n_components = 50
  • 应用 PCA
  • 测试集有450张图片,我可以在这个测试集中测试模型成功。

现在,我想预测网络摄像头拍摄的单张图像。问题是我应该将 PCA 应用于该图像吗?

  • 如果我不应用 PCA,我会得到 ValueError: X.shape[1] = 90000 should be equal to 50, the number of features at training time
  • 如果我应用 PCA,我会得到 ValueError: n_components=50 must be between 0 and min(n_samples, n_features)=1 with svd_solver='full'

我使用 Python 3,scikit-learn 0.20.3,这是我应用 PCA 的方式:

from sklearn.decomposition import PCA
pca = PCA(50)
pca.fit_transform(features)

最佳答案

您还需要在测试集上应用 PCA。

您需要考虑 PCA 的作用:

PCA 构建一个新的特征集(包含比原始特征空间更少的特征),然后您随后在这个新特征集上进行训练。您需要为测试集构建这个新功能集,以使您的模型有效!

重要的是要注意,“缩减”功能集中的每个功能都是原始功能的线性组合,其中对于给定数量的新功能(n_components),它们是功能集最大化新空间中保留的原始空间的方差。

实际上要对测试集执行相关转换,您需要执行以下操作:

# X_test - your untransformed test set

X_test_reduced = pca.transform(X_test)

其中 pca 是在您的训练集上训练的 PCA() 的实例。本质上,您正在构建一个到低维空间的转换,并且您希望这个转换对于训练集和测试集是相同的!如果您在训练集和测试集上独立训练 pca,您(几乎可以肯定)将数据嵌入到不同的低维表示中并具有不同的特征集。

关于python - 将 PCA 应用于一个样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55933306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com