Да, эта стратегия, в которой отдельные двоичные классификаторы подходят для каждого из нескольких классов, представленных в одном наборе данных, называется "один против всех" или "один против остальных" . Некоторые модели sklearn поставляются с этим параметром, например логистическая регрессия , где вы можете установить для параметра multi_class
значение 'ovr'
для одного v. Отдыха.
Есть хороший объект sklearn, который облегчает работу других алгоритмов, который называется OneVersusRestClassifier . Для вашего наивного байесовского примера это так же просто, как:
from sklearn.multiclass import OneVsRestClassifier
from sklearn.naive_bayes import GaussianNB
clf = OneVsRestClassifier(GaussianNB())
Тогда вы можете использовать свой классификатор как обычно, например, clf.fit(X,y)
(Интересно, что модель "один против всех наивных байесовских" не просто эквивалентна многочленовому наивному байесовскому, когда существует три или более классов, как я изначально предполагал. Вот короткий пример здесь , который демонстрирует это. )