2016-06-13 3 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]]] 

Эта массивная матрица имеет форму: (2, 243, 320). Теперь я хочу провести контролируемое обучение по этому набору функций вместе с массивом numpy label. Но когда я пытаюсь сделать это, это говорит о ожидаемом числе аргументов < = 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 требует это 2 одномерный массив. То, что вы отправляете, является 3-мерным ... Не нужно было использовать уменьшение размерности, потому что его совершенно другая проблема ... (для предотвращения специфической переустановки)

Таким образом, для вашего массива должно быть имя arr (ndarray)

просто сделать это -

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

Что это будет сделать, это преобразовать массив в 2d списка и Woot теперь вы можете использовать его, чтобы подогнать модель!

+0

Отличный ответ. Огромное спасибо. Я новичок в механическом обучении, поэтому мои основы не настолько сильны. –

0

Использование Reshape:

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

ValueError: общий размер нового массива должен быть неизменным. Это ошибка, когда я пробовал это. –

+0

Попробуйте следующее: new_img = np.reshape (old_data, (2,243 * 320,1)), а затем используйте сжатие, чтобы исключить последнюю ось. – Alessandro

Смежные вопросы