【问题标题】:Reducing dimensions for supervised learning减少监督学习的维度
【发布时间】:2016-06-13 13:15:51
【问题描述】:

我有这种类型的 numpy 数组。在这里,我展示了数组的 2 个元素。我已将 .jpeg 文件转换为 numpy 数组。

[[[130 130 130 ..., 255 255 255]
  [255 255 255 ..., 255 255 255]
  [255 255 255 ..., 255 255 255]
  ..., 
  [255 255 255 ..., 255 255 255]
  [255 255 255 ..., 255 255 255]
  [ 68  68  68 ...,  68  68  68]]

  [[130 130 130 ..., 255 255 255]
  [255 255 255 ..., 255 255 255]
  [255 255 255 ..., 255 255 255]
  ..., 
  [255 255 255 ..., 255 255 255]
  [255 255 255 ..., 255 255 255]
  [ 68  68  68 ...,  68  68  68]]]

这个 numpy 数组的形状为:(2, 243, 320)。 现在我想对这个特征数组以及一个标签 numpy 数组进行监督学习。但是当我尝试这样做时,它会显示预期的参数数量

现在我尝试通过 LDA 减小尺寸,如下所示。

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis(n_components=2)
X_r2 = lda.fit(features, labels).transform(features)

但它再次表示 LDA 需要

【问题讨论】:

    标签: python numpy scikit-learn scikit-image


    【解决方案1】:

    您的代码的问题很简单,您没有以所需的格式发送列表.....fit 需要的格式是二维数组。你发送的是一个 3 维的......没有必要使用降维,因为它完全是一个不同的问题......(为了防止过度拟合具体)

    所以假设你的数组是名称arr(ndarray)

    就这样做——

    fin_array = arr.reshape((2*243, 320))
    

    这会将您的数组转换为 2d 列表,现在您可以使用它来拟合模型!

    【讨论】:

    • 优秀的答案。太感谢了。我是机器学习新手,所以我的基础不是那么强。
    【解决方案2】:

    使用重塑:

    new_img = np.reshape(old_data,(2,243*320))
    

    【讨论】:

    • ValueError:新数组的总大小必须保持不变。这是我尝试这个时的错误。
    • 试试这个:new_img = np.reshape(old_data,(2,243*320,1)) 然后使用挤压消除最后一个轴
    猜你喜欢
    • 2018-12-09
    • 2014-04-20
    • 2013-03-24
    • 2021-10-17
    • 2019-02-20
    • 2018-10-01
    • 2019-06-04
    • 2018-12-31
    • 2017-06-27
    相关资源
    最近更新 更多