Знакомство с Байесом

Байесовский анализ данных на Python

Michal Oleszak

Machine Learning Engineer

Биномиальное распределение

  • Дискретное распределение, принимает одно из двух значений:
    • Успех (1)
    • Неудача (0)
  • Один параметр: вероятность успеха.
  • Задача: по списку исходов оценить вероятность успеха.
Байесовский анализ данных на Python

Биномиальное распределение в Python

Число успехов в 100 испытаниях:

import numpy as np
np.random.binomial(100, 0.5)
51

 

np.random.binomial(100, 0.5)
44

Выборка из биномиального распределения:

import numpy as np
np.random.binomial(1, 0.5, size=5)
array([1, 0, 0, 1, 1])
Байесовский анализ данных на Python

Вероятность орла

  • get_heads_prob() — пользовательская функция
  • вход: список результатов подбрасывания монеты
  • выход: список — распределение вероятности успеха

 

import numpy as np
tosses = np.random.binomial(1, 0.5, size=1000)
print(tosses)
[1 0 0 0 1 1 0 1 1 ... ]
Байесовский анализ данных на Python

Вероятность орла

heads_prob = get_heads_prob(tosses)
print(heads_prob)
[0.47815295 0.51679212 0.51684779 ... ]
import matplotlib.pyplot as plt
import seaborn as sns

sns.kdeplot(heads_prob, 
            shade=True, 
            label="heads probabilty")
plt.show()

Симметричная колоколообразная кривая с пиком около значения 0,51 по оси X.

Байесовский анализ данных на Python

Давайте потренируемся!

Байесовский анализ данных на Python

Preparing Video For Download...