使用scikit-learn进行多标签文本分类,使用哪种分类器?

时间:2018-02-16 20:56:24

标签: python scikit-learn classification text-classification

我使用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')
...

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

1 个答案:

答案 0 :(得分:1)

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

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

  • RandomForestClassifier
  • KNeighborsClassifier

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

我希望它有所帮助, 尼古拉斯