回答編集履歴

3

追記

2020/02/01 01:42

投稿

meg_
meg_

スコア10602

test CHANGED
@@ -43,3 +43,87 @@
43
43
  TypeError: __init__() got an unexpected keyword argument 'value'
44
44
 
45
45
  そちらの環境では問題なく動くのではないでしょうか?
46
+
47
+
48
+
49
+ ---
50
+
51
+ 【追記】
52
+
53
+ pm.Binomial()のところで、observed=review_rate_0_to_1 * review_numに変更し、TypeErrorは解消しました。
54
+
55
+ しかし下記コードにて「pm.MAP」と「pm.MCMC」でAttributeErrorが出ます。
56
+
57
+ pymc3にはこれらのAttributeはないようです。
58
+
59
+ この2つの代々手段について別の質問を立ち上げた方が良いと思います。
60
+
61
+ ```Python
62
+
63
+ ##-------------------------------
64
+
65
+ # モデルの設計
66
+
67
+ ##-------------------------------
68
+
69
+
70
+
71
+ # レビュー評価の事後分布の軌跡(trace)を取得する
72
+
73
+ # レビューの評価は0.0〜5.0のものを、0~1の範囲の一様分布で扱うため、引数で与えられた値に対して調整を加える
74
+
75
+ # name は確率変数名
76
+
77
+ def get_posterior_review_rate_trace(review_rate, review_num):
78
+
79
+ with pm.Model() as model:
80
+
81
+ _review_rate = pm.Uniform(name='review_rate', lower=0, upper=1)
82
+
83
+ review_rate_0_to_1 = (review_rate - 1) * 0.25
84
+
85
+ print('0~1の範囲でのレビュー評価 : ', review_rate_0_to_1)
86
+
87
+
88
+
89
+ # 連続確率変数のためBeta分布を使用
90
+
91
+ with pm.Model() as model:
92
+
93
+ theta = pm.Beta(name='theta', alpha=1, beta=1)
94
+
95
+
96
+
97
+ with pm.Model() as model:
98
+
99
+ observations = pm.Binomial(
100
+
101
+ # nはレビュー数、valueはレビュー評価にレビュー数を乗算した値を指定
102
+
103
+ name='obs', n=review_num, p=theta,
104
+
105
+ observed=review_rate_0_to_1 * review_num)
106
+
107
+ map_ = pm.MAP([theta, observations]).fit()
108
+
109
+
110
+
111
+ with pm.Model() as model:
112
+
113
+ model2 = pm.Model([theta, observations])
114
+
115
+ mcmc = pm.MCMC(model2)
116
+
117
+
118
+
119
+ # MCMCの探索を。第一引数は探索回数。第二引数のバーンインは最初の収束していない一定数は好ましくないので破棄して5000件目~20000件目のサンプリング結果を取得
120
+
121
+ mcmc.sample(20000, 5000)
122
+
123
+ # 探索結果のthetaの確率変数の軌跡を取得
124
+
125
+ trace = mcmc.trace('theta')
126
+
127
+ return trace
128
+
129
+ ```

2

追記

2020/02/01 01:42

投稿

meg_
meg_

スコア10602

test CHANGED
@@ -38,6 +38,8 @@
38
38
 
39
39
  ```
40
40
 
41
- 「0~1の範囲でのレビュー評価 : 0.875」の表示までは出来ましたが、他のエラーが出ました
41
+ 「0~1の範囲でのレビュー評価 : 0.875」の表示までは出来ました他のエラーが出ました
42
42
 
43
43
  TypeError: __init__() got an unexpected keyword argument 'value'
44
+
45
+ そちらの環境では問題なく動くのではないでしょうか?

1

追記

2020/02/01 00:52

投稿

meg_
meg_

スコア10602

test CHANGED
@@ -21,3 +21,23 @@
21
21
    Python:3.6.9
22
22
 
23
23
    pymc3:3.7
24
+
25
+
26
+
27
+ ---
28
+
29
+ 【追記】
30
+
31
+ 質問のコードの下記部分を変更したところ(変数名modelが重複していたのでmodel2に変更)
32
+
33
+ ```Python
34
+
35
+ model2 = pm.Model([theta, observations])
36
+
37
+ mcmc = pm.MCMC(model2)
38
+
39
+ ```
40
+
41
+ 「0~1の範囲でのレビュー評価 : 0.875」の表示までは出来ましたが、他のエラーが出ました。
42
+
43
+ TypeError: __init__() got an unexpected keyword argument 'value'