Skip to content

Instantly share code, notes, and snippets.

@smzn
smzn / gist:05f3ee7251f749e01c3856b76e4c4ca8
Created February 19, 2024 00:12
P(B | S) セキュリティ会社に連絡がいったとき、泥棒が入った確率
#P(B | S) セキュリティ会社に連絡がいったとき、泥棒が入った確率
from pgmpy.inference import VariableElimination
# 推論エンジンの作成
infer = VariableElimination(model)
# P(B | S)を求める
result = infer.query(variables=['B'], evidence={'S': 1})
probability_b_given_s = result.values[1] # B = 1の確率を取得
@smzn
smzn / gist:ae444db377445e579d30986a3267f30f
Created February 19, 2024 00:06
ベイジアンネットワークのモデルを作成
from pgmpy.models import BayesianNetwork
from pgmpy.factors.discrete import TabularCPD
# ベイジアンネットワークのモデルを作成
model = BayesianNetwork()
# ノードを追加
model.add_nodes_from(['B', 'E', 'A', 'P', 'S'])
# エッジを追加
@smzn
smzn / gist:28df30e21474398c6c105071d00e6cd5
Created February 18, 2024 23:57
ベイジアンネットワーク例2
import networkx as nx
import matplotlib.pyplot as plt
# ベイジアンネットワークの有向グラフを作成
G2 = nx.DiGraph()
# ノードを追加
G2.add_node("B")
G2.add_node("E")
G2.add_node("A")
@smzn
smzn / gist:df5abdcd44c4685648c4d90f90d4ebab
Created February 18, 2024 20:43
確率的推論(事後確率) P(W = 1 | G = 1) 芝が濡れているとき、晴れである確率は?
#P99 確率的推論(事後確率) P(W = 1 | G = 1) 芝が濡れているとき、晴れである確率は?
# P(W = 1 | G = 1)を求める
result = infer.query(variables=['W'], evidence={'G': 1})
probability_w_given_g_1 = result.values[1] # W = 1の確率を取得
print("P(W = 1 | G = 1):", probability_w_given_g_1)
@smzn
smzn / gist:e8740e624bb54e14194ade6fba22a6a4
Created February 18, 2024 20:39
P101 (1) P(G = 1 | W = 1)を計算:天気が晴れという条件のもとで、芝が濡れている確率
#P101 (1) P(G = 1 | W = 1)を計算:天気が晴れという条件のもとで、芝が濡れている確率
from pgmpy.inference import VariableElimination
# 推論エンジンの作成
infer = VariableElimination(model)
# P(G = 1 | W = 1)を求める
result = infer.query(variables=['G'], evidence={'W': 1})
print(result)
probability_g_given_w_1 = result.values[1] # G = 1の確率を取得
@smzn
smzn / gist:69b11fb8c878df4a184f543a334b802f
Created February 18, 2024 20:32
ベイジアンネットワークの作成
from pgmpy.models import BayesianNetwork
from pgmpy.factors.discrete import TabularCPD
# ベイジアンネットワークのモデルを作成
model = BayesianNetwork()
# ノードを追加
model.add_nodes_from(['W', 'S', 'R', 'G'])
# エッジを追加
@smzn
smzn / gist:f7d6d395defbed50afbd3aba7d78cee0
Created February 18, 2024 20:21
ベイジアンネットワークの作成
import networkx as nx
import matplotlib.pyplot as plt
# ベイジアンネットワークの有向グラフを作成
G = nx.DiGraph()
# ノードを追加
G.add_node("W")
G.add_node("S")
G.add_node("R")
import pymc as pm
import arviz as az
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gamma
# 観測データ
x = daily_sales.values # 観測データの例
@smzn
smzn / gist:a5f6f401825244f591042628a70b3fef
Created January 30, 2024 18:48
事後予測分布で得られた点の分布
from scipy.stats import nbinom
# 新しいデータ点 x_new が取り得る値の範囲
x_new_values = range(0, daily_sales.max())
# 事後予測分布を計算(負の二項分布を使用)
p_pred = [nbinom.pmf(k=x_new, n=alpha_posterior, p=beta_posterior/(1+beta_posterior)) for x_new in x_new_values]
# 結果をプロット
# Calculate the mode (MAP estimate) of the posterior gamma distribution
if alpha_posterior > 1:
lambda_map_estimate = (alpha_posterior - 1) / beta_posterior
else:
lambda_map_estimate = 0
lambda_map_estimate