Из массива в массиве в одну строку - PullRequest
0 голосов
/ 28 октября 2019

Я предварительно обрабатываю свои данные, чтобы сделать эту работу:

model = LogisticRegression()
model.fit(X, Y)

Я изо всех сил пытаюсь изменить мой numpy.ndarray.

На данный момент, для Y у меня есть:

Y
array([array([[52593.4410802]]), array([[52593.4410802]])], dtype=object)
Y.shape
(2,)
type(Y)
<class 'numpy.ndarray'>

И для X у меня есть:

X
array([array([[34.07824204],
       [33.36032467],
       [24.61158084],
       ...,
       [34.62648953],
       [34.49591937],
       [34.40951467]]),
       array([[ 4.50136316],
       [ 7.46307729],
       [17.07135805],
       ...,
       [57.98715047],
       [54.5733181 ],
       [50.13691107]])], dtype=object)
X.shape
(2,)
type(X)
<class 'numpy.ndarray'>

Я хотел бы получить свой X и преобразовать его, чтобы каждый из данных стал столбцом / функцией (идея транспонирования). Таким образом, каждое значение стало бы чем-то вроде этой идеи:

X[0][0]
array([34.07824204])
X[0][1]
array([33.36032467])
# Sudo code idea:
# X_new = [0][0],[0][1],...
# X_new = append(X_new,[1][0],[1][1]...)

То, что я пробовал:

nsamples, nx, ny = X.shape
d2_train_dataset = X.reshape((nsamples,nx*ny))

Кроме того, я пытался изменить форму и транспонировать, но это не даст того, что янужно:

X
array([array([[34.07824204],
       [33.36032467],
       [24.61158084],
       ...,
       [34.62648953],
       [34.49591937],
       [34.40951467]]),
       array([[ 4.50136316],
       [ 7.46307729],
       [17.07135805],
       ...,
       [57.98715047],
       [54.5733181 ],
       [50.13691107]])], dtype=object)
X.T
array([array([[34.07824204],
       [33.36032467],
       [24.61158084],
       ...,
       [34.62648953],
       [34.49591937],
       [34.40951467]]),
       array([[ 4.50136316],
       [ 7.46307729],
       [17.07135805],
       ...,
       [57.98715047],
       [54.5733181 ],
       [50.13691107]])], dtype=object) 

Как предложено в одном из комментариев, я попытался без успеха: (Я получаю вывод в качестве ввода)

X.flatten()
array([array([[34.07824204],
       [33.36032467],
       [24.61158084],
       ...,
       [34.62648953],
       [34.49591937],
       [34.40951467]]),
       array([[ 4.50136316],
       [ 7.46307729],
       [17.07135805],
       ...,
       [57.98715047],
       [54.5733181 ],
       [50.13691107]])], dtype=object)

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Перед изменением, избавьтесь от ваших массивов в массивах. Вы можете сделать это легко с numpy.stack. Например,

import numpy
from numpy import array
Y = array([array([[52593.4410802]]), array([[52593.4410802]])], dtype=object)
Y = numpy.stack(Y)
print(Y.shape)
print(Y)

дает:
(2,1,1)
[[[52593.4410802]]

[[52593.4410802]]]

Отсюда вы можете изменить то, что вам нужно.

0 голосов
/ 28 октября 2019

Как я понимаю из Y, ваши ярлыки непрерывны, а не дискретны. Ваши данные предполагают, что вам нужна модель регрессии, но вы пытаетесь приспособить бинарный классификатор, логистическая регрессия. В качестве алгоритма регрессии вы можете использовать линейную регрессию , регрессию опорных векторов или любую другую модель регрессии.

...