Как исправить ошибку отступа ValueError: not enough values to unpack (expected 3, got 1)?
Изменение размерности у X_train успешно компилируется, но ничего не меняя при изменении размерности у Y_train выдаёт ошибку:
ValueError: not enough values to unpack (expected 3, got 1)
from lightgbm import LGBMClassifier
from tensorflow.keras.datasets import mnist
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()
nsamples, nx, ny = X_train.shape # место возникновения ошибки
X_train = X_train.reshape((nsamples,nx*ny))
nsamples, nx, ny = Y_train.shape
Y_train = Y_train.reshape((nsamples,nx*ny))
model = LGBMClassifier(objective='multiclass')
model.fit(X_train,Y_train,categorical_feature=[0,3])
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
уберите строки:
nsamples, nx, ny = Y_train.shape
Y_train = Y_train.reshape((nsamples,nx*ny))
т.к. они не имеют смысла.
Y_train - это одномерный вектор правильных значений для обучения модели:
In [62]: Y_train.shape
Out[62]: (60000,)
In [63]: Y_train[:5]
Out[63]: array([5, 0, 4, 1, 9], dtype=uint8)
поэтому у него только один компонент в размерности .shape, который вы пытаетесь присвоить сразу трем переменным - это вызывает указанную вами ошибку.
Воспроизведение ошибки:
In [64]: a,b,c = (60000,)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-64-a5b9b64c3fb7> in <module>
----> 1 a,b,c = (60000,)
ValueError: not enough values to unpack (expected 3, got 1)
Если вы изменяете размерность обучающей выборки, то и тестовую выборку надо изменить таким же способом:
test_samples, nx, ny = X_test.shape # место возникновения ошибки
X_test = X_test.reshape((-1, nx*ny))