摘要:多标签分类任务中,总要构造模型输入数据-多标签的Label,MultiLabelBinarizer函数提供了许多的方便,轮子不造也是要学一学的。
In [3]: from sklearn.preprocessing import MultiLabelBinarizer
...: mlb = MultiLabelBinarizer(classes = [2,3,4,5,6,1]) # 注意这里加了classes参数
...: mlb.fit_transform([(1, 2), (3,4),(5,)])
...:
Out[3]:
array([[1, 0, 0, 0, 0, 1],
[0, 1, 1, 0, 0, 0],
[0, 0, 0, 1, 0, 0]])
In [4]: mlb.classes_
Out[4]: array([2, 3, 4, 5, 6, 1])
classes参数,能指定标签的index,默认是从0开始按顺序给标签编码。
若如上代码,若添加了classes参数,则标签2的编码为[1,0,0,0,0,0], 体会一下
若以中文作为Label,fit函数能直接统计labellist中的label种类,很方便
In [3]: from sklearn.preprocessing import MultiLabelBinarizer
...: labellist = [['红色'],['绿色'],['红色','绿色']]
...: mlb = MultiLabelBinarizer()
...: mlb.fit(labellist) # 直接用fit函数,统计label种类,十分好用
...: y = []
...: for label in labellist:
...: label_matrix = mlb.fit_transform([label])
...: y.append(label_matrix[0])
...:y
Out[3]:
array([[1, 0],
[0, 1],
[1, 1]])
In [4]: mlb.classes_
Out[4]: array(['红色','绿色'])