如何使用 MultiLabelBinarizer 进行多标签分类?

问题描述

我正在尝试进行多标签分类。但我真的坚持数据预处理。我的目标数据在一个单独的文件中。目标数据是这样的

   Id              Tag
0   1             data
1   4               c#
2   4         winforms
3   4  type-conversion
4   4          decimal

我正在尝试使用 MultiLabelBinarizer 来预处理数据。最后,我希望它看起来像这样 -

ID 数据 c# winforms 类型转换 十进制
1 1 0 0 0 0
4 0 1 1 1 1

这是我正在使用的代码

import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer

question_tags = pd.read_csv("./archive/question_tags.csv")
print(question_tags.head())
mlb = MultiLabelBinarizer()
print(mlb.fit_transform(question_tags))

这是我得到的输出

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

我做错了什么?

解决方法

你没有做错任何事。 MultiLabelBinarizer() 与大多数其他 sklearn 内容一样,返回 numpy 数组。在这种情况下,基础数据看起来与您的预期输出相同,没有 IDTag 名称。

改用pd.crosstab

pd.crosstab(df['Id'],df['Tag'])

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...