作ったものや頑張ったことを紹介するブログです2019-07-31MITのGenを触ってみました技術調査MITが作ったGenを触ってみました。汎用的な確率的プログラミングシステムだそうです。きていないので触ってみます。dl.acm.orgリグレッションのチュートリアルがあったので、それを見ながらいじってみます。probcomp.github.ioGenとPyplot(図示用)をuse。リグレッション用のデータを適当に定義します。c="black")テスト用のデータこんなデータです。次に直線のmodelを定義します。直線のリグレッションは、slope(傾き)とintercept(切片)を求める問題になります。分散stdの正規分布からサンプリングする関数です。@traceとつけた変数は後から取り出せます。試しにxsを入れて、traceを出力してみます。(xs,));print(Gen.get_choices(trace))traceの中身が見えました。-1.1714993555976527ではリグレッションを解いてみます。10000);observations(観測値)を定義します。traceのkey名と合うようにyの値を代入します。Gen.importance_resamplingで尤度の高いパラメータがtraceに入って返ってきます。slopeとinterceptを出力します。println("傾き:$(trace[:slope])")println("切片:$(trace[:intercept])")傾き:-1.01555295049826切片:1.6680061649897056plotします。変わったことをしてみる直線かサインカーブかわからないケースのリグレッションを考えてみます。新しくサインカーブのモデルを作ります。endend;2つのモデルをくっつけます。endend;bernoulliとやるとコインを投げられます。lineかsineかのどちらかになります。前と同じテストデータを入れてtraceを出力してみます。trueis_lineがtrueになっています。次にysを変えてみます。-2.76];新しいテストデータ同じcombined_modelに入れてtraceを見ます。false今度はis_lineがfalseになっています。periodがtraceに現れます。結果2パラメータ推定もきちんとできました。7引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。