【问题标题】:PCA making my image garbagePCA 使我的图像垃圾
【发布时间】:2018-01-28 11:27:27
【问题描述】:

所以我有 42,000 张图片。每张图片都是 28x28,所以有 784 个特征或像素。

我想做一个手写数字分类系统。

所以我想我应该使用 PCA 来减少图像的尺寸。

这是 PCA 的代码

pipeline = Pipeline([ ('scaling', StandardScaler()),('pca',PCA(n_components=676))])
X_array = pipeline.fit_transform(X_array)  

现在的问题是,PCA 使所有图像类型都是随机的,我的意思是所有像素的颜色都是完全随机的。

这是 PCA 之前的数字图像

这是 PCA 之后的数字图像

这是另一张经过 PCA 缩小的图像

我正在将图像的尺寸从 28x28 减小到 26x26

为什么会这样

【问题讨论】:

    标签: machine-learning scikit-learn computer-vision pca


    【解决方案1】:

    基本上,您的 PCA 代码所做的是将您的 28x28 数组(您一次传递一张图像,对吗?)作为包含 28 个数字特征的 28 个示例的数据集。这就是为什么输出没有意义。 PCA 是一种降低完整数据集维数的方法,而不是缩小图像。

    要使PCA 正常工作,您应该展平图像的所有特征(每个特征都作为一个包含 784 个特征的数组)并将所有这些特征作为单个数据集(即 42000 x 784 矩阵)提供。然后,从方法的输出中,根据需要选择尽可能多的列,以便保留数据集的大部分方差(总共可能不会超过 10、20 个特征)。

    在将每一行打印为图像时,输出数据集仍然看起来很奇怪,但其特征将比原始数据集少得多(您最终应该得到一个大小为 42000 x 20 的矩阵,而不是 42000 x 784 - 那是为什么 PCA 被用作降维方法),并将保留其大部分预测能力。

    之后,您可以在管道的下一步中将数据集提供给您最喜欢的分类器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多