2016-06-13 152 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