Я хотел бы использовать 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 с такой же структурой:
И прочту его в 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 ()?