-1

説明: 次のコードは、n 次元の 2 つのドットの座標を受け取ります。これらの 2 つのドットのマンハッタン距離を計算します。コード:

def manhanttan( ponto1, ponto2 ):
    totalp1 = 0
    totalp2 = 0
    for x in range( 0, len( ponto1 ) ):
        totalp1 += ponto1[x]
        totalp2 += ponto2[x]
    return abs( totalp1 - totalp2 )

def manhanttan( ponto1, ponto2 ):
    total = 0
    for x in range( 0, len( ponto1 ) ):
        total += abs( ponto1[x] - ponto2[x] )
    return total

異なる結果を出していますが、その理由はわかりません。誰か助けてくれませんか?

PS: リスト内のすべての値は正です

PS2:私の分類が取得する最初のもので

K1: Expected Class: 6, Found Class: 0 K2: Expected Class: 6, Found Class: 0 K3: Expected Class: 6, Found Class: 0 K4: Expected Class: 6, Found Class: 0 K5: Expected Class: 6, Found Class: 0

そして、私が得る他のものと K1: Expected Class: 6, Found Class: 6 K2: Expected Class: 6, Found Class: 6 K3: Expected Class: 6, Found Class: 6 K4: Expected Class: 6, Found Class: 6 K5: Expected Class: 6, Found Class: 6

4

3 に答える 3

3

なぜそれらは同じであるべきだと思いますか?

単一の数列のみを合計することを検討してください。

a = [1, -1, 1, -1, 1, -1]

合計するときに絶対値を取る場合、実際にはシーケンスを合計しています。

a = [1, 1, 1, 1, 1, 1]

その結果、合計が として報告され6ます。しかし、最後まで待って絶対値をとると、 a( 0) の合計が得られ、まだ である絶対値が得られ0ます。

*注 - 各リストのすべての値が正であるからといって、それらのが正であるとは限りません。たとえば
ponto1[x] - ponto2[x]、まだの可能性があります。

于 2014-10-29T16:30:46.403 に答える
1

保存結果は表示されません。

と を検討p1 = [0,1]してくださいp2 = [1,0]

次にabs(sum(p1)-sum(p2))0 を返し、ここでsum(abs(p1-p2))2 を返します。

合計の分布特性により、 が得られるabs(sum(p1)-sum(p2)) == abs(sum(p1-p2))ため、差の合計を計算したら、絶対値のみを取得する必要があります。

ちなみに、sumは組み込みの python 関数であり、あなたが思っていることを正確に実行します。

于 2014-10-29T17:03:09.747 に答える
0

2 番目の関数は、2 つのベクトル間のマンハッタン距離、つまり個々の次元がどれだけ離れているかの合計を計算しています。最初の関数は、差を取る前に各ベクトルを 1 つの数値に減らします。すべての座標が正であると仮定すると、オリゴから各ベクトルまでのマンハッタン距離を取り、それらの差を取ることを意味します。それは非常に異なる機能です!

次の 2D ベクトルのペアを考えてみましょう。

y
5   a
4
3
2         b
1
0 o
  0 1 2 3 4 5 x

ここでは、(0,0) に origo、(1,5) に a、(4,2) に b があります。a から b に移動するには、ba=(4-1,2-5)=(3,-3) を移動する必要があり、合計は sum(map(abs,[3,-3]))=6 になります。ステップ。しかし、o から a への移動は 6 ステップであり、o から b への移動も同様であるため、(6,0) と (0) を通る同じ距離線上に a と b がたまたまある場合でも、リダクションの最初の方法では a と b が等しいと見なされます。 ,6) (円に相当するマンハッタン距離は、実際にはひし形、つまり 45° 回転した正方形であるため)。

于 2014-10-29T16:54:55.927 に答える