摘要:多标签分类任务中,总要构造模型输入数据-多标签的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 labellisr:...: 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(['红色','绿色'])