【问题标题】:PCA fit() runtime warning (invalid value encountered in true_divide)PCA fit() 运行时警告(在 true_divide 中遇到无效值)
【发布时间】:2017-07-14 10:53:33
【问题描述】:

这个问题与机器学习有关。 我用灰度图像的值填充了一个数组。

ben = io.ImageCollection('./Ben_bw.png')[0]
ben = np.array(ben)#array of all pixels

现在我将数组展平:

ben_flat = ben.reshape((1, -1))

当我打印 ben_flat.shape 时,我得到一个非零的 (1, 10304) 数组

然后当我尝试使用 PCA 并拟合数组时:

pca = PCA(n_components=200)
ben_reduced = pca.fit(ben_flat) 

当我适合数组时,我收到一个错误:

RuntimeWarning: invalid value encountered in true_divide

据我了解,某处有一个零分频器。但我不明白它在哪里,也不知道它是如何到达那里的。

【问题讨论】:

    标签: python arrays python-3.x scikit-learn pca


    【解决方案1】:

    PCA 拟合是使用 n 个样本完成的,每个样本具有相同数量的特征。比较每个样本的成分,首先保留方差最大的成分,从而保留最多的信息。 ben_flat 只是一个样本,算法不知道如何将其分解为较低的维度,因为没有其他样本可以与之比较。

    【讨论】:

    • 我现在看到了我的错误。谢谢你。我误解了该功能应该做什么。我需要更多样本才能找到它们之间的差异。
    • 没错!您还可以保留您的一张图像并将其分解,将每一行像素视为样本(您现在拥有相同的东西,只是不要展平),以进行概念验证,以确保您的算法正常工作。
    • 还有n_components here 的文档:n_components == min(n_samples, n_features)。所以也许这对他来说是一个问题,只有 1 个样本。
    • @Aberger 我遇到了类似的错误,我想减少图像的 HogDescriptor 的维度,它给出了长度为 10^5 的特征向量,有没有办法将 PCA 应用于一个样本降维?
    • @aberger 我想将来自 HOG 描述符的特征提供给前馈 NN,没有 PCA,特征向量的长度约为 50000,这就是原因。我已经通过将图像大小调整为小尺寸来实现一种解决方法,这样 HOG 只提供长度约为 200 的特征
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2018-02-04
    • 2021-01-25
    相关资源
    最近更新 更多