python中的多类分类

Posted

技术标签:

【中文标题】python中的多类分类【英文标题】:Mutli-class classification in python 【发布时间】:2018-08-03 03:18:23 【问题描述】:

我正在将二进制分类问题转换为多标签分类程序。代码是用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]

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

请帮忙。

【问题讨论】:

你用positive_lebels做什么?目前它们只是列表列表(丢失了他们拥有的任何其他信息),您如何使用将决定您的解决方案是否正确。 【参考方案1】:

您可以为此在 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]])

【讨论】:

感谢您的帮助。

以上是关于python中的多类分类的主要内容,如果未能解决你的问题,请参考以下文章

Encog中的多类SVM分类

R中的多类ROC曲线

使用 Python API 进行逻辑回归多类分类

H2O randomForest中的多类分类

为啥对于 Keras 中的多类分类, binary_crossentropy 比 categorical_crossentropy 更准确?

Scikit 学习支持向量机的多类分类