Чтобы продемонстрировать осуществимость Наивного Байеса, мы приняли набор данных для применения метода классификации. Мы принимаем набор данных по кредитам, представленный в https://github.com/gedeck/practical-statistics-for-data-scientists/tree/master/data. Имя файла loan_data.csv.gz
. Мы хотели бы предсказать, будет ли человек по умолчанию или окупится. Мы ограничиваемся только 3 из 19 функций, так как некоторые из функций имеют числовой тип. Большинство частей кода приведены в [1].
from sklearn.naive_bayes import MultinomialNB loan_data = pd.read_csv('loan_data.csv.gz') # convert to categorical loan_data.outcome = loan_data.outcome.astype('category') loan_data.outcome.cat.reorder_categories(['paid off', 'default']) loan_data.purpose_ = loan_data.purpose_.astype('category') loan_data.home_ = loan_data.home_.astype('category') loan_data.emp_len_ = loan_data.emp_len_.astype('category') predictors = ['purpose_', 'home_', 'emp_len_'] outcome = 'outcome' X = pd.get_dummies(loan_data[predictors], prefix='', prefix_sep='') y = loan_data[outcome] naive_model = MultinomialNB(alpha=0.01, fit_prior=True) naive_model.fit(X, y) new_loan = X.loc[146:146, :] print('predicted class: ', naive_model.predict(new_loan)[0]) probabilities = pd.DataFrame(naive_model.predict_proba(new_loan), columns=naive_model.classes_) print('predicted probabilities',) print(probabilities)
Результат будет
Как видно, вероятность того, что запись № 146 относится к классу по умолчанию и окупилась, составляет 65% и 34% соответственно. Мы также можем получить вероятность функции для каждого класса с помощью кода ниже:
feature_prob = np.exp(1) ** naive_model.feature_log_prob_
Результат будет
Обратите внимание, что MultinomialNB
представляет собой логарифм вероятности. Я для того, чтобы получить реальную вероятность, мы должны использовать экспоненциальную основу.
MultinomialNB
использует некоторую плавность, настроенную параметром alpha
. Он также пытается использовать априорное распределение, как байесовский вывод, который является наиболее отличительным элементом по сравнению с аналогичным выводом частоты.
Заворачивать
В этом кратком введении мы кратко представили наивного байесовца и лежащую в его основе концепцию. Мы также реализуем метод классификации с использованием наивного байесовского метода.
Ссылка
[1] Брюс, Питер, Эндрю Брюс и Питер Гедек. Практическая статистика для специалистов по данным: более 50 основных концепций использования R и Python. О'Рейли Медиа, 2020.