У меня есть набор данных, который включает 200000 обозначенных примеров обучения. Для каждого примера обучения у меня есть 10 функций, включая как непрерывные, так и дискретные. Я пытаюсь использовать пакет python sklearn
, чтобы обучать модель и делать прогнозы, но у меня есть некоторые проблемы (и некоторые вопросы тоже).sklearn: классификатор Naive Bayes дает низкую точность
Прежде всего позвольте мне написать код, который я написал до сих пор:
from sklearn.naive_bayes import GaussianNB
# data contains the 200 000 examples
# targets contain the corresponding labels for each training example
gnb = GaussianNB()
gnb.fit(data, targets)
predicted = gnb.predict(data)
Проблема заключается в том, что я получаю очень низкую точность (слишком много неправильно классифицирован этикетки) - около 20%. Однако я не совсем уверен, есть ли проблема с данными (например, больше данных требуется или что-то еще) или с кодом.
Это правильный способ реализовать классификатор Naive Bayes с учетом набора данных с дискретными и непрерывными функциями?
Кроме того, в Machine Learning мы знаем, что набор данных должен быть разделен на обучающие и валидационные/испытательные наборы. Выполняется ли это автоматически sklearn
или должна ли я fit
модели с использованием набора учебных материалов, а затем позвонить predict
с использованием набора валидации?
Любые мысли или предложения будут высоко оценены.
Поезд/тестовые сплиты * не * сделаны автоматически, но есть много встроенных функций, позволяющих вам сделать это легко. –
Посмотрите на функции slearn для [перекрестной проверки] (http://scikit-learn.org/stable/modules/cross_validation.html) – Jakub
С другой стороны, вы подгоняете модель ко всем своим данным, поэтому один будет ожидать относительно высокую точность при прогнозировании по тем же данным.Возможно, вы захотите изучить настройки гиперпараметров вашей модели (см. Страницу '' sklearn' на настройке параметров] (http://scikit-learn.org/stable/modules/grid_search.html) – Jakub