class classpython 中的多重化

Mutli-class classification in python

我正在将二元分类问题转换为多标签分类程序。代码写在python.

下面是已有的代码:

positive_labels = [[0, 1] for _ in positive_examples]
negative_labels = [[1, 0] for _ in negative_examples]

现在我想将其转换为多标签,例如 3 类 - 0,1,2

positive_labels = [[1,0,0] for _ in positive_examples]
neutral_labels = [[0,1,0] for _ in neutral_examples]
negative_labels = [[0,0,1] for _ in negative_examples]

这是正确的吗?如果不能,请告诉我该怎么做?

请帮忙。

为此,您可以在 scikit-learn 中使用 MultiLabelBinarizer

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
# to fit transform you pass the rows of labels
mlb.fit_transform([(0,), (1,),(1,2)])

您会得到如下所示的输出

array([[1, 0, 0],
       [0, 1, 0],
       [0, 1, 1]])

fit_transform 方法实现了 TransformerMixin (http://scikit-learn.org/stable/modules/generated/sklearn.base.TransformerMixin.html)。它适合学习然后转换它。一旦你调用了fit_transform,就不需要再次调用fit,你只需要像下面这样调用transform

mlb.transform([(1,2),(0,1)]) 

array([[0, 1, 1],
       [1, 1, 0]])