1

期待値の最大化を行うためにオンラインで見つけたレシピを機能させようとしています( http://code.activestate.com/recipes/577735-expectation-maximization/ )。次のエラーが発生します。

Traceback (most recent call last):
  File "./runem.py", line 7, in <module>
    print expectation_maximization([[1,2,3,4,5],[2,3,4,5,6],[9,8,7,4,1]], 2)
  File "/local/scratch-3/dk427/rp/em.py", line 83, in expectation_maximization
    Px[o,c] = pnorm(t[o,:], params[c]['mu'], params[c]['sigma'])
  File "/local/scratch-3/dk427/rp/em.py", line 18, in pnorm
    xmt = np.matrix(x-m).transpose()
TypeError: __array_prepare__ must return an ndarray or subclass thereof which is otherwise identical to its input

アルゴリズムに何らかの欠陥があるに違いないか、間違った入力を与えていますが、何が問題なのかわかりません。エラーは減算によって引き起こされることがわかりましたx-m, but x.dtype=int64and m.dtype=float64, これはうまくいくと思います.

誰にもアイデアはありますか?

4

1 に答える 1

2

配列ではなくリストのリストを渡しているようです。次のようなことができます。

ts = np.array([[1,2,3,4,5],[2,3,4,5,6],[9,8,7,4,1]])
expectation_maximization(ts, 2)

私のコンピューターで平方根を取ると、ある時点で問題が発生するようですが、何らかの理由でそのデータがこのアルゴリズムに適していないためだと思います(ただし、アルゴリズムが何をしようとしているのかはわかりませんするので、一概には言えません)。

于 2012-05-09T04:50:59.383 に答える