2016-06-13 147 views
-1

我有这种类型的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维。我如何减小尺寸。

回答

1

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

因此,假设你的数组是名字arr(ndarray)

只是这样做 -

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

这是什么要做的就是你的数组转换成2D列表和活泉现在你可以用它来拟合模型!

+0

优秀的答案。非常感谢。我是机器学习的新手,所以我的基础知识并不那么强大。 –

0

使用重塑:

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

ValueError:新数组的总大小必须保持不变。 这是我尝试这个时发生的错误。 –

+0

试试这个:new_img = np.reshape(old_data,(2,243 * 320,1)),然后用squeeze消除最后一个轴 – Alessandro