ПУТЕВОДИТЕЛЬ НАИВНЫХ ЗАЛИВ
Как улучшить наивный байесовский метод?
Раздел 3: Настройка модели в Python
Ссылка Как реализовать наивный байесовский метод? Раздел 2: Построение модели на Python , прежде чем продолжить…
[10] Определение параметров поиска по сетке
param_grid_nb = { 'var_smoothing': np.logspace(0,-9, num=100) }
var_smoothing
- это расчет стабильности для расширения (или сглаживания) кривой и, следовательно, для учета большего количества выборок, которые находятся дальше от среднего значения распределения. В этом случае np.logspace возвращает числа, равномерно распределенные по шкале журнала, начиная с 0, заканчивая -9 и генерируя 100 выборок.
Зачем нужен этот шаг: Для настройки выбранных параметров используется поиск оптимальной комбинации. Ссылаясь на документацию sklearn.naive_bayes.GaussianNB, вы можете найти полный список параметров с описаниями, которые можно использовать в функциях поиска по сетке.
[11] Настройка гиперпараметров с использованием данных обучения
from sklearn.naive_bayes import GaussianNB from sklearn.model_selection import GridSearchCV nbModel_grid = GridSearchCV(estimator=GaussianNB(), param_grid=param_grid_nb, verbose=1, cv=10, n_jobs=-1) nbModel_grid.fit(X_train, y_train) print(nbModel_grid.best_estimator_) ... Fitting 10 folds for each of 100 candidates, totalling 1000 fits GaussianNB(priors=None, var_smoothing=1.0)
Примечание. Общее количество подгонок равно 1000, поскольку cv
определено как 10 и есть 100 кандидатов (var_smoothing
имеет 100 определенных параметров). Следовательно, расчет для общего количества подходов → 10 x [100] = 1000.
estimator
- интересующая модель машинного обучения при условии, что у модели есть функция оценки; в этом случае присвоенная модель - GaussianNB ().param_grid
- словарь с именами параметров (строкой) в качестве ключей и списками настроек параметров, которые можно попробовать в качестве значений; это позволяет осуществлять поиск по любой последовательности настроек параметров.verbose
- многословность: чем выше, тем больше сообщений; в этом случае он установлен на 1.cv
- это генератор перекрестной проверки или итерация, в этом случае используется 10-кратная перекрестная проверка.n_jobs
- максимальное количество одновременно работающих воркеров; в этом случае он установлен в -1, что означает, что используются все процессоры.
Зачем этот шаг: найти оптимальную комбинацию гиперпараметров, которая минимизирует предопределенную функцию потерь для получения лучших результатов.
[12] Прогноз по данным тестирования
y_pred = nbModel_grid.predict(X_test) print(y_pred) ... [0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 0 1 0 1 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 0 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 1 0]
Почему этот шаг: получение прогноза модели на основе данных тестирования для оценки точности и эффективности модели.
[13] Числовой анализ
from sklearn.metrics import confusion_matrix print(confusion_matrix(y_test, y_pred), ": is the confusion matrix") from sklearn.metrics import accuracy_score print(accuracy_score(y_test, y_pred), ": is the accuracy score") from sklearn.metrics import precision_score print(precision_score(y_test, y_pred), ": is the precision score") from sklearn.metrics import recall_score print(recall_score(y_test, y_pred), ": is the recall score") from sklearn.metrics import f1_score print(f1_score(y_test, y_pred), ": is the f1 score") ... [[81 27] [19 81]] : is the confusion matrix 0.7788461538461539 : is the accuracy score 0.75 : is the precision score 0.81 : is the recall score 0.7788461538461539 : is the f1 score
Примечание. Используя матрицу путаницы, можно извлечь истинно положительные, ложноположительные, ложноотрицательные и истинно отрицательные значения, которые помогут в вычислении показателя точности, показателя точности, показателя отзыва и показателя f1:
- Истинно положительный = 81
- Ложноположительный = 27
- Ложноотрицательный = 19
- True Negative = 81.
Зачем этот шаг: оценить производительность настроенной модели классификации. Как вы можете видеть, показатели точности, точности, отзывчивости и F1 улучшились за счет настройки модели на основе базовой гауссовской наивной байесовской модели, созданной в Разделе 2.
Далее - Зачем использовать наивный байесовский метод? Раздел 4: Оценка компромиссов модели …