#python #naivebayes
#python #наивный Байес
Вопрос:
Сейчас я изучаю науку о данных по учебнику (ссылка), но я не совсем понимаю, что пытается сказать код.
Код показывает, как работает наивный байесовский код, но в книге не рассказывается, что происходит, и не очень хорошо объясняется. Часть, которую я не понимаю, — это последняя часть. Что представляет результат печати? Кажется, это вероятность, но я не совсем понимаю, как на это смотреть.
Зачем брать последние 8 вероятностей? Есть ли для этого какая-либо причина?
Я немного изменил код, чтобы использовать его в Spyder, чтобы он отличался от ссылки.
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
from sklearn.datasets import make_blobs
x, y = make_blobs(100, 2, centers=2, random_state=2, cluster_std=1.5)
plt.scatter(x[:, 0], x[:, 1], c=y, s=50, cmap='RdBu')
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(x, y)
rng = np.random.RandomState(0)
xnew = [-6, -14] [14, 18] * rng.rand(2000, 2)
ynew = model.predict(xnew)
plt.scatter(x[:, 0], x[:, 1], c=y, s=50, cmap='RdBu')
lim = plt.axis()
plt.scatter(xnew[:, 0], xnew[:, 1], c=ynew, s=20, cmap='RdBu', alpha=0.1)
plt.axis(lim)
yprob = model.predict_proba(xnew)
print(yprob[-8:].round(2))
Результат печати:
[[0.89 0.11]
[1. 0. ]
[1. 0. ]
[1. 0. ]
[1. 0. ]
[1. 0. ]
[0. 1. ]
[0.15 0.85]]
Любая помощь?
Ответ №1:
Весь смысл обучения модели состоит в том, чтобы предсказать вероятную классификацию из y (yprob)
в один из двух классов для заданного значения x.
Итак, сначала вы обучаете модель, с помощью которой вы создаете model.fit(x, y)
.
Затем с помощью этой модели вы предсказываете класс для y с помощью model.predict_proba(xnew)
.
Здесь вы прогнозируете вероятность попадания y в один из двух классов (binary classification)
для 2000 случайно сгенерированных значений x. В реальном мире x поступает из реального источника данных.
В этой строке просто выводится вероятность класса y для последних 8 значений x.
print(yprob[-8:].round(2))
Обратите внимание, что каждый из выходных данных представляет собой список из 2 элементов, например — первый вывод [0.89 0.11]
. Это означает, что для данного значения x вероятность того, что оно принадлежит первому классу, составляет 89%, в то время как его принадлежность ко второму классу составляет всего 11% — обе вероятности в сумме составляют 100%
Ответ №2:
Рабочий процесс кода
- Используйте набор данных для обучения модели (Gaussian Naive Bayes)
- Предсказать вероятность попадания y в классы для 2000 случайных значений x (оценка максимальной вероятности с использованием обученной модели)
Все графики и распечатки предназначены только для визуализации. Он просто представляет вероятность попадания y в классы A и B (результаты шага 2) для каждого события.