Что представляет собой этот наивный байесовский код из учебника?

#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:

Рабочий процесс кода

  1. Используйте набор данных для обучения модели (Gaussian Naive Bayes)
  2. Предсказать вероятность попадания y в классы для 2000 случайных значений x (оценка максимальной вероятности с использованием обученной модели)

Все графики и распечатки предназначены только для визуализации. Он просто представляет вероятность попадания y в классы A и B (результаты шага 2) для каждого события.