使用 scikit-learn 进行多标签文本分类,使用哪些分类器?
Multi-label text classification with scikit-learn, which classifiers to use?
我使用导入这些分类器的 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')
...
如果可以使用这些分类器,还是我应该使用其他一些分类器?
所有能够做到 Multi-class 或 Multi-Label 的分类器都在 this page 上被引用。
基于它,你的模型中只有2个可以直接使用multi-label:
- 随机森林分类器
- KNeighborsClassifier
在我完成(在练习中)之后,将 OneVsAll 与另一个兼容的分类器一起使用,然后提取前 N 个或所有高于 X% 的标签(标签越多,阈值越低因为总和等于 1)。这不是您可以做的最干净的事情,但它确实有效(我将其与 multi-label 分类器结果进行了比较,结果非常接近或相同)
希望对您有所帮助,
尼古拉斯
我使用导入这些分类器的 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')
...
如果可以使用这些分类器,还是我应该使用其他一些分类器?
所有能够做到 Multi-class 或 Multi-Label 的分类器都在 this page 上被引用。
基于它,你的模型中只有2个可以直接使用multi-label:
- 随机森林分类器
- KNeighborsClassifier
在我完成(在练习中)之后,将 OneVsAll 与另一个兼容的分类器一起使用,然后提取前 N 个或所有高于 X% 的标签(标签越多,阈值越低因为总和等于 1)。这不是您可以做的最干净的事情,但它确实有效(我将其与 multi-label 分类器结果进行了比较,结果非常接近或相同)
希望对您有所帮助, 尼古拉斯