Составление списка по вертикали с использованием np.vstack приводит к ошибке - PullRequest
0 голосов
/ 15 мая 2018

Я слежу за этим фрагментом кода http://queirozf.com/entries/scikit-learn-pipeline-examples, чтобы разработать классификатор Multilabel OnevsRest для текста.Я хотел бы вычислить hamming_score и, следовательно, должен был бы также преобразовать метки моих тестов в двоичную форму.Таким образом, у меня есть:

        X_train, X_test, labels_train, labels_test = train_test_split(meetings, labels, test_size=0.4)

Здесь, label_train и label_test - список списков

    [['dog', 'cat'], ['cat'], ['people'], ['nice', 'people']]

Теперь мне нужно преобразовать все мои метки в бинаризацию, поэтому я делаю это ...

     all_labels = np.vstack([labels_train, labels_test])
     mlb = MultiLabelBinarizer().fit(all_labels)

Как указано в ссылке.Но это бросает

    ValueError: all the input array dimensions except for the concatenation axis must match exactly

Я использовал np.column_stack, как указано здесь

сцепление массива numpy: «ValueError: все входные массивы должны иметь одинаковое количество измерений»

но это выдает ту же ошибку.

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

1 Ответ

0 голосов
/ 15 мая 2018

MultilabelBinarizer работает непосредственно со списком списков, поэтому вам не нужно складывать их, используя numpy. Напрямую отправьте список без укладки.

all_labels = labels_train + labels_test
mlb = MultiLabelBinarizer().fit(all_labels)
...