Python: ValueError: установка элемента массива с помощью последовательности

Я пытаюсь использовать scikit-learn для машинного обучения.

Я использую модуль предварительной обработки для подготовки своих данных. Данные имеют тип float.

Из прочтения других вопросов, касающихся этой проблемы: ValueError: установка элемента массива с помощью последовательность, это либо из-за неправильной структуры моих данных, либо из-за того, что мои данные имеют строковый тип. Ни то, ни другое, похоже, здесь не так.

Пожалуйста, дайте мне знать, если у вас есть идеи, как решить эту проблему или что это вообще значит. Спасибо.

Код:

print(X)

pred_X = np.array(pred_X)
pred_Y = np.array(pred_Y)
X = np.array(X)
Y = np.array(Y)

X = preprocessing.scale(X)
pred_X = preprocessing.scale(pred_X)

печать (х):

[[547180.0, 120.0, 113.0, 456701.0, 1.0, 6.43, -1.0, 0.313, 0.42, 0.267 3.0, 11800.0, 607208.0, 120.0, 113.0, 456701.0, 1.0, 0.273, 0.331, 0.154, 6.0, 10300.0, 458015.0, 113.0, 120.0, 45328 6.0, 1.0, 2.54, -1.0, 0.32, 0.443, 0.257, 3.0, 92000.0, 543685.0, 120.0, 113.0, 456701.0, 1.0, 6.43, 1.0, 0.296, 0.4, 0.234, 2.0, 8800.0, 594809.0, 475582.0, 120.0, 113.0, 456701.0, 1.0, 1.0, 0.295, 0.384, 0.264, 4.0, 7700.0], 
[547180.0, 120.0, 113.0, 456701.0, 1.0, 6.43, -1.0, 0.313, 0.42, 0.267, 3.0, 11800.0, 607208.0, 120.0, 113.0, 456701.0, 1.0, 0.273, 0.331, 0.154, 6.0, 10300.0, 458015.0, 113.0, 120.0, 453286.0, 1.0, 2.54, -1.0, 0.32, 0.443, 0.257, 3.0, 92000.0, 543685.0, 120.0, 113.0, 456701.0, 1.0, 6.43, 1.0, 0.296, 0.4, 0.234, 2.0, 8800.0, 594809.0, 435062.0, 120.0, 113.0, 456701.0, 1.0, 1.0, 0.312, 0.364, 0.154, 5.0, 6900.0], 
[547180.0, 120.0, 113.0, 456701.0, 1.0, 6.43, -1.0, 0.313, 0.42, 0.267, 3.0, 11800.0, 607208.0, 120.0, 113.0, 456701.0, 1.0, 0.273, 0.331, 0.154, 6.0, 10300.0, 458015.0, 113.0, 120.0, 453286.0, 1.0, 2.54, -1.0, 0.32, 0.443, 0.257, 3.0, 92000.0, 543685.0, 120.0, 113.0, 456701.0, 1.0, 6.43, 1.0, 0.296, 0.4, 0.234, 2.0, 8800.0, 594809.0, 446308.0, 120.0, 113.0, 456701.0, 1.0, 0.0, 0.221, 0.28e, 0.115, 8.0, 6400.0]]

Ошибка:

Traceback (most recent call last):
  File "sampleSVM.py", line 46, in <module>
    X = preprocessing.scale(X)
  File "/home/user/.local/lib/python3.5/site-packages/sklearn/preprocessing/data.py", line 133, in scale
    dtype=FLOAT_DTYPES)
  File "/home/user/.local/lib/python3.5/site-packages/sklearn/utils/validation.py", line 433, in check_array
    array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: setting an array element with a sequence.

person Sophia Zhang    schedule 01.05.2018    source источник
comment
Такие элементы, как 45328 6.0, не позволяют мне скопировать и вставить ваш X.   -  person hpaulj    schedule 02.05.2018
comment
Помог ли ответ ниже? Не стесняйтесь принять ответ (зеленая галочка слева) или попросить разъяснений.   -  person jpp    schedule 08.05.2018


Ответы (1)


Ваш входной массив X искажен. В строке 1 59 элементов, а в строках 2 и 3 — 58. При преобразовании в массив numpy он становится массивом формы (3,) с dtype=Object.

Решение состоит в том, чтобы проверить и исправить ваши входные данные. Каждая строка в X должна быть одинаковой длины.

person jpp    schedule 01.05.2018