0

n 3D ポイントのセットがあり、(x,y,z)その平均を計算したいと思います。

特に私の目的は、いくつかのメトリックの違いを比較することです。

ユークリッド距離:D_E(D_1,D_2) = ||D_1 - D_2||

リーマン距離:D_R(D_1,D_2) = ||log(D_1^(-1/2) * D_2 * D_1^(-1/2))||

メトリックを修正したら、最小化問題を計算する必要があります。

この種のタスクのために Python Scipy.optimize を作成しましたが、問題をどのように定式化するかわかりません。for ループを使用する必要がありますか?

編集:

scipy.optimize.leastsqが見つかりました。私の目標には、役に立ちそうです。勾配降下フレームワークでどのように使用できますか?

4

2 に答える 2

1
>>> import numpy as np
>>> a = np.array([[1,2,3],[1,2,3],[7,-100,8]])
>>> a.mean(axis=0)
array([  3.        , -32.        ,   4.66666667])
于 2012-06-04T16:48:33.893 に答える
0

追加のライブラリなし:

>>> make_operation = lambda op: lambda *points: tuple(map(op, *points))

>>> add = make_operation(lambda x1, x2: x1 + x2)
>>> sub = make_operation(lambda x1, x2: x1 - x2)

>>> print add((1,2,3), (4,5,6))
(3,5,7)

>>> div = lambda point, num: tuple(map(lambda x: float(x) / num, point))
>>> print div((4,6,8), 2)
(1,2,3)

>>> mean = lambda *points: div(reduce(add, points), len(points))
>>> print mean((1,2,3), (1,2,3), (7,-100,8))
(3.0, -32.0, 4.666666666666667)
于 2012-06-04T17:53:39.690 に答える