Numpy __array_prepare__ грешка

Опитвам се да заработя една рецепта, която намерих онлайн за максимизиране на очакванията (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, но x.dtype=int64 и m.dtype=float64, което според мен трябва да работи.

Някой има ли идеи?


person Doa    schedule 08.05.2012    source източник


Отговори (1)


Изглежда, че предавате списък от списъци, а не масив. Бихте могли да направите нещо като:

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

Това изглежда има някои проблеми в даден момент с извличането на квадратен корен на моя компютър, но мисля, че това може да е, защото тези данни не са добри за този алгоритъм по някаква причина (но не знам какво се опитва да направи алгоритъмът правя, така че не мога да кажа със сигурност).

person Ken    schedule 09.05.2012