减少监督学习的维度

时间:2016-06-13 13:15:51

标签: python numpy scikit-learn scikit-image

我有这种类型的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数组。但是,当我尝试这样做时,它表示预期的参数数量< = 3。

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

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

但它再次说LDA期望< = 2维度。如何减小尺寸。

2 个答案:

答案 0 :(得分:1)

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

因此,将数组命名为arr(ndarray)

就这样做 -

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

这样做的目的是将您的阵列转换为2d列表,现在您可以使用它来适应模型!

答案 1 :(得分:0)

使用重塑:

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