问题描述
我正在尝试进行多标签分类。但我真的坚持数据预处理。我的目标数据在一个单独的文件中。目标数据是这样的
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 数组。在这种情况下,基础数据看起来与您的预期输出相同,没有 ID
和 Tag
名称。
改用pd.crosstab
:
pd.crosstab(df['Id'],df['Tag'])