2016-11-29 33 views
0

独自のカスタマイズされた最近傍メソッドを作成したいと思います。ユークリッド距離のpythonデータフレーム行列

これは、与えられた関数(例えば、私のデータセットの7つの項目に基づくユークリッド)について、xとyの各組み合わせの距離を返す行列(x:y)を必要とします。

data: 
    x1 x2 x3 
    row 1: 1 2 3 
    row 2: 1 1 1 
    row 3: 4 2 3 

私はX1とX2とのユークリッドを選択した場合、出力は3x3の出力

1:1=0 
1:2 =sqrt((1-1)^2+(2-1)^2)=1 
1:3 =sqrt((1-4)^2+(2-2)^2)=sqrt(3) 
2:1=1:2=1 
2:2=0 
2:3=sqrt((1-4)^2+(1-2)^2)=2 
3:3=0 

あるべきなど...

データフレームを反復処理することなく、その書き方を?

ご協力いただきありがとうございます。

+0

が間違っている、すなわち '1:3'でなければなりません' SQRT(9)= 3'、と '2 :3'は 'sqrt(10)'でなければなりません。 – root

答えて

2

あなたはscipy.spatial.distance.pdistscipy.spatial.distance.squareformを使用することができます。

from scipy.spatial.distance import pdist, squareform 

dist = pdist(df[['x1', 'x2']], 'euclidean') 
df_dist = pd.DataFrame(squareform(dist)) 

あなたは自分の出力として、配列ではなく、データフレームは、単にデータフレームでそれをラップせず、それ自体でsquareformを使用したい場合。

(DATAFRAMEなど)結果の出力:それはあなたの例の計算の一部のように見えます

 0   1   2 
0 0.0 1.000000 3.000000 
1 1.0 0.000000 3.162278 
2 3.0 3.162278 0.000000 
+0

非常に良い!どうもありがとう! –

関連する問題