Есть ли быстрый способ тренировать много моделей одновременно? - PullRequest
1 голос
/ 02 июня 2019

Я хочу обучить двухстороннему классификатору, то есть предположим, что у меня есть 4 класса, к которым я хочу классифицировать текст.Я не хочу группировать все тренировочные данные в один тренировочный набор, и тогда ярлыки будут состоять из 4 ярлыков.Скорее я хочу сделать двоичные метки.Например, я должен сначала сделать 4 копии набора данных, а затем я делаю метку A, а остальные - не A, а затем второй набор данных будет B, а не B и т. Д.

Последля этого мне нужно сделать 4 модели (например, наивного Байеса) и обучить каждый набор данных, который я сделал.То, что я хочу, - это способ сделать все это без всей этой работы.Это возможно?

1 Ответ

0 голосов
/ 02 июня 2019

Да, эта стратегия, в которой отдельные двоичные классификаторы подходят для каждого из нескольких классов, представленных в одном наборе данных, называется "один против всех" или "один против остальных" . Некоторые модели 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)

(Интересно, что модель "один против всех наивных байесовских" не просто эквивалентна многочленовому наивному байесовскому, когда существует три или более классов, как я изначально предполагал. Вот короткий пример здесь , который демонстрирует это. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...