【问题标题】:Multi-label text classification with scikit-learn, which classifiers to use?使用 scikit-learn 进行多标签文本分类,使用哪些分类器?
【发布时间】:2018-07-27 19:58:10
【问题描述】:

我已经使用导入这些分类器的 scikit-learn Python 库完成了文本分类:

from sklearn.linear_model import RidgeClassifier
from sklearn.svm import LinearSVC
from sklearn.linear_model import SGDClassifier
from sklearn.linear_model import Perceptron
from sklearn.linear_model import PassiveAggressiveClassifier
from sklearn.naive_bayes import BernoulliNB, MultinomialNB
from sklearn.neighbors import KNeighborsClassifier
from sklearn.neighbors import NearestCentroid
from sklearn.ensemble import RandomForestClassifier

输入文本的格式为:

('some text 1', 'class1')
('some text 2', 'class2')
('some text 3', 'class3')
...

一切都很好。但我想知道的是我是否有多标签文本,例如:

('some text 1', 'class1', 'class3')
('some text 2', 'class2', 'class1')
('some text 3', 'class3')
...

如果可以使用这些分类器,还是应该使用其他分类器?

【问题讨论】:

    标签: python scikit-learn classification text-classification


    【解决方案1】:

    所有能够进行多类或多标签的分类器都在this page 上引用。

    基于此,你的模型中只有2个可以直接用作多标签:

    • 随机森林分类器
    • KNeighborsClassifier

    在我完成之后(在练习中),将 OneVsAll 与另一个兼容的分类器一起使用,然后提取前 N 个或高于 X% 的所有标签(您拥有的标签越多,阈值越低,因为总和等于 1)。这不是你能做的最干净的事情,但它有效(我将它与多标签分类器结果进行了比较,它非常接近或相同)

    希望对你有帮助 尼古拉斯

    【讨论】:

    • 感谢您非常简洁的回答,我会尝试您建议的方法。只是一个问题:multiclass-multioutput 是唯一可以用于多标签分类的吗?由于其他人似乎用于多类但没有多标签输出,这一事实是否有所不同
    • 多类-多输出不同于简单的多标签。例如,如果你想用多标签对一顿饭进行分类,你可能会有(咸:是/否,好:是/否,暖:是/否)。使用 Multiclass-Multioutput 你可能有(味道:甜/咸/酸,好:Tastefull/correct/bad/horrible,...)。如果标签是二进制的,则可以使用 Support multilabel 或 Support multiclass-multioutput。你可以有多个输出,它只会支持多类多输出。但是您每次都可以通过在所有解决方案上执行 One Hot Encoder 将多输出转换为多标签
    猜你喜欢
    • 2015-07-05
    • 2015-02-05
    • 2016-05-16
    • 2017-04-07
    • 2016-10-17
    • 1970-01-01
    • 2017-08-08
    • 2016-07-12
    • 2014-11-19
    相关资源
    最近更新 更多