Конвертировать массив в список для MultiLabelBinarizer - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть следующий массив: "['book', 'read']" "['cup', 'drink']" и т. Д., И я хотел бы преобразовать его в список, который позволил бы мне применить MultiLabelBinarizer .

В настоящее время он либо дает мнеотдельные символы или вывод только 0 с.

Y = train_labels.iloc[:, 0].values
values = np.array(Y)

mlb = MultiLabelBinarizer(classes=("drink","cup","book", "read"))
output = mlb.fit_transform(values)
print(output)  

Ожидаемые результаты:

[0 0 1 1]
[1 1 0 0]

Фактические результаты:

 [0 0 0 0]
 [0 0 0 0]

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

Другой подход:

Вы можете преобразовать свой массив, используя ast.literal_eval()

arr = ["['book', 'read']","['cup', 'drink']","['book', 'read']","['book', 'read']"]

import ast 
X = [ast.literal_eval(i) for i in arr]

from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer(classes=("drink","cup","book", "read"))
output = mlb.fit_transform(X)
print(output) 

Вывод:

[[0 0 1 1]
 [1 1 0 0]
 [0 0 1 1]
 [0 0 1 1]]
0 голосов
/ 06 февраля 2019

Я подозреваю, что вам нужно обратить внимание на правильный формат ввода для MultiLabelBinarizer.

y: итерируемые итерируемые
набор меток (любой заказываемый и хешируемый объект)для каждого образца.

Доказательство:

txt = [['book', 'read'],['cup', 'drink']]
mlb = MultiLabelBinarizer(classes=("drink","cup","book", "read"))
mlb.fit_transform(txt)
array([[0, 0, 1, 1],
       [1, 1, 0, 0]])

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

Примечание о формате данных

Если вы настаиваете, что ваши данные находятся в массиве, который вы указали в своем сообщении:

arr = ["['book', 'read']","['cup', 'drink']"]

, то следующий фрагмент кода преобразует их в правильный формат:

import re
[["".join(re.findall("\w",f)) for f in lst] for lst in [s.split(",") for s in arr]]
[['book', 'read'], ['cup', 'drink']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...