Проблемы с форматированием в MultiLabelBinarizer () после чтения CSV в Pandas - PullRequest
0 голосов
/ 19 сентября 2019

Я хотел бы использовать MultiLabelBinarizer () для подготовки столбца, содержащего метки, которые применяются к тексту.Например, прогнозирование жанров, к которым может относиться фильм, основано на заголовке .

MultiLabelBinarizer () прекрасно работает, когда значения предварительно определены как список в DataFrame:

import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer

df = pd.DataFrame({"Text": ["Blah blah", "Blah blah blah"],
              "Tag": [["Hi", "Hello"], ["Hey"]]})

mlb = MultiLabelBinarizer()
print(mlb.fit_transform(df["Tag"]))
print(mlb.classes_)

Дает

array([[1, 0, 1],
       [0, 1, 0]])

array(['Hello', 'Hey', 'Hi'], dtype=object)

Однако этот подход не срабатывает, когдаЯ читаю файл CSV или Excel в Pandas.Например, если я сделаю простой CSV с такой же структурой:

Example of CSV

И прочту его в Pandas +, использую MultiLabelBinarizer ():

df = pd.read_csv(filepath)

mlb = MultiLabelBinarizer()
print(mlb.fit_transform(df["Tag"]))
print(mlb.classes_)

Он обрабатывает каждый символ как отдельный класс и больше не выводится как array ():

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

[' ' '"' ',' 'H' 'e' 'i' 'l' 'o' 'y']

Учитывая это ограничение, как я могу читать из файла CSV или Excel и сохранятьфункциональность MultiLabelBinarizer ()?

1 Ответ

0 голосов
/ 19 сентября 2019

Добавить .str.split (",")

mlb.fit_transform(df["Tag"].str.split(","))
...