一回ちゃんと勉強しようと思って『続・わかりやすいパターン認識―教師なし学習入門―』を勉強しています。とりあえず図を本の中で描かれてるグラフを再現しながら勉強しています。
from matplotlib.pyplot import *
import numpy as np
np.random.seed(10) #ランダム関数のシード
#ベイズ学習の関数
def bayes_learning(data_list,side):
if side == "H":
numerator = prior_prob * head_prob
elif side == "T":
numerator = prior_prob * (1 - head_prob)
else:
pass
posterior_prob = numerator / numerator.sum()
return posterior_prob
#コイントスのシミュレーション
results = ""
prob = 0.6
for i in np.random.random(100):
if i < prob:
results += "H"
else:
results += "T"
#print(results)
#事前学習の初期値
prior_prob = np.array([0.1, 0.4, 0.5])
head_prob = np.array([0.8, 0.6, 0.3])
tmp = np.array([prior_prob])
#コインの裏表を学習
for side in results:
prior_prob = bayes_learning(prior_prob,side)
tmp = np.append(tmp, prior_prob)
tmp = tmp.reshape(101,3)
plot(tmp)
show()
これをすると34ページの図が出ます。
詳細の説明はダルいので本を買ってください。