我有以下数组:“['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]
最佳答案
我怀疑您需要注意 MultiLabelBinarizer
输入的正确格式。
y : iterable of iterables
A set of labels (any orderable and hashable object) for each sample.
证明:
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']]
关于python - 将数组转换为 MultiLabelBinarizer 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54552802/