Ожидаемый двумерный массив, вместо этого получен одномерный массив при попытке инвертировать масштабированные данные

1

Я пытался решить это в течение нескольких часов и не могу этого сделать, когда я пытаюсь инвертировать масштабированные данные.

 In: print(yhat.shape), print(test_X[:, 0:].shape)
 Out:(1155, 1), (1155, 1, 37)

# invert scaling for forecast

inv_yhat=np.dstack((yhat, test_X[:, 0:])).shape
inv_yhat = scaler.inverse_transform(inv_yhat)
inv_yhat = inv_yhat[:,0]


---------------------------------------------------------------------------
ValueError: Traceback (most recent call last)
<ipython-input-334-779bdcd26d3e> in <module>()
      3 
      4 inv_yhat=np.dstack((yhat, test_X[:, 0:])).shape
----> 5 inv_yhat = scaler.inverse_transform(inv_yhat)
      6 inv_yhat = inv_yhat[:,0]

/anaconda3/lib/python3.6/site-packages/sklearn/preprocessing/data.py in inverse_transform(self, X)
    381         check_is_fitted(self, 'scale_')
    382 
--> 383         X = check_array(X, copy=self.copy, dtype=FLOAT_DTYPES)
    384 
    385         X -= self.min_

/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
    439                     "Reshape your data either using array.reshape(-1, 1) if "
    440                     "your data has a single feature or array.reshape(1, -1) "
--> 441                     "if it contains a single sample.".format(array))
    442             array = np.atleast_2d(array)
    443             # To ensure that array flags are maintained

ValueError: Expected 2D array, got 1D array instead:
array=[1.155e+03 1.000e+00 3.800e+01].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

В моем столбце данных есть либо целое число, либо float (без категориальных). Кроме того, я удалил столбец даты.

Что я делаю неправильно?

Теги:
machine-learning
python-3.x
scikit-learn

2 ответа

1

Ответ прямо перед вами. Вы используете 1D-массив в качестве ввода, но данные всегда должны быть 2D в scikit-learn:

Измените свои данные либо с помощью array.reshape(-1, 1), если ваши данные имеют одну функцию.

Попробуйте что-нибудь вроде:

inv_yhat = scaler.inverse_transform(inv_yhat.reshape(-1,1))

0

Привет, у меня такая же проблема

from sklearn.linear_model import LinearRegression as lr
import numpy  as np
lm = lr()
y =df['temp'].values.reshape(-1,1)
x= df['cnt'].values.reshape(-1,1)
lm.fit(y,x)
lm.predict([0.23])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню