Чтобы продемонстрировать осуществимость Наивного Байеса, мы приняли набор данных для применения метода классификации. Мы принимаем набор данных по кредитам, представленный в 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.