
前提
マルチポストです、急用のためご容赦ください。。。
https://qiita.com/ohnomycolapart3/questions/883e11ff0321c11a026f
pythonのライブラリ「pgmpy」を使いベイジアンネットワークを構築しているが、条件付き確率(表)の値が正しく推定されない。
発生している問題・エラーメッセージ
プログラム自体は回る状況だが、推定された条件付き確率の値がすべて同じ値で算出される。
親ノード、子ノードの各変数名は正しく反映できているので、なぜ条件付き確率だけ算出できていないのかが不明。
該当のソースコード
python
1from pgmpy.models import BayesianModel 2df = pd.read_csv(filename+'_2.csv', encoding="UTF-8") 3model = BayesianModel([('直近OD量レベル','直後OD量レベル'),('時間帯ダミー','直後OD量レベル'),('曜日ダミー','直後OD量レベル'),('①自OD経路時間(ダミー)','直後OD量レベル'), \ 4('②転換OD経路時間(ダミー)','直後OD量レベル'),('③転換OD経路時間(ダミー)','直後OD量レベル'),('①自OD工事ダミー','直後OD量レベル'),('②転換OD工事ダミー','直後OD量レベル'),('③転換OD工事ダミー','直後OD量レベル')]) 5 6model.fit(df) #条件は省略。標準ではオーバーフィットに特に注意 7cpds = model.get_cpds() 8 9# 以下、CSV、TXTに条件付き確率表を吐き出す 10a=str(model.get_cpds('直後OD量レベル')) 11a=a.replace('-', '') 12a=a.replace('+', '') 13a=a.split('|') 14del a[0] 15# a=a.remove('\n') 16 17outlist=[] 18templist=[] 19for cpd in a: 20 if cpd=='\n\n': 21 outlist.append(templist) 22 templist=[] 23 else: 24 templist.append(cpd) 25with open(filename+"cpd.csv", "w", newline="") as f: 26 writer = csv.writer(f) 27 for cpd in outlist: 28 writer.writerow(cpd) 29 30with open(filename+"cpd.txt", "w", newline="") as f: 31 writer = csv.writer(f) 32 for cpd in outlist: 33 writer.writerow(cpd)
試したこと
データフレームのCSVファイルを新しく作り直したら、正しく算出されるときもあったので、おそらくCSVの書式などの問題かとも思いますが、イマイチこれといった原因が掴めずです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。


回答1件
あなたの回答
tips
プレビュー