Pythonの距離尺度と達成(A)

転送:  https://www.cnblogs.com/denny402/p/7027954.html

1.  ユークリッド距離(ユークリッド距離)
       のユークリッド距離は、距離算出方法が最も容易に両者の間のユークリッド空間から誘導式から理解されます。
(1)二次元平面からユークリッドBの間の2つの時(X1、Y1)(X2、Y2)に:

(2)3つの2点空間において(X1、Y1、Z1)とB(X2、Y2、 :Z2の間のユークリッド距離)

、ユークリッド距離(3)2つのn次元ベクトル(X11、X12、...、 X1N) 及びb(X21、X22、...、 X2N) 間:

(4)で表すことができます。ベクトル演算の形で:

Python実装で:

この方法の一つ:

コードをコピー
AS NP numpyのインポート
X = np.random.random(10)
Y = np.random.random(10) 
方法A:溶液式に従って
D1 = np.sqrt(np.sum(np.square(XY))) 
方法2:ソルバライブラリscipyのダウンロード
scipy.spatial.distanceインポートPDISTから
X-np.vstack =([X、Y])
D2 = PDIST(X-)
コードをコピー

2.  マンハッタン距離(マンハッタン距離)
       名前からはこの距離の計算を推測することができます。あなたは、マンハッタン内の別の交点に1つの交差点から車で想像し、二点間の走行距離はそれから直線のですか?もちろん、あなたが建物を通過することができない場合を除きます。実際の走行距離は、「マンハッタン距離」です。これはまた、マンハッタン距離は、としても知られている名前からマンハッタンの源であるシティブロック距離(シティブロック距離)
(A)2つの2次元平面(X1、Y1)とBの間のマンハッタン距離(X2、Y2)、

(2)2つのn次元ベクトル(X11、X12、...、 X1N) 及びb(X21、X22、間...マンハッタン距離、X2N)

Python実装で:

コードをコピー
NP numpyのインポートAS 
X = np.random.random(10)
Y = np.random.random(10)

式に従って対処:#方法A 
D1 = np.sum(np.abs(XY)) 
方法2:scipyのダウンロードライブラリを解決
scipy.spatial.distanceインポートPDISTから
X-np.vstack =([X、Y])
D2 = PDIST(X、 'CityBlock')
コードをコピー

3.  チェビシェフ距離 (チェビシェフ距離)
       チェスはそれを果たしましたか?キングスは、1つの中でいずれかの隣接する8つの正方形に移動することができ、物事を取ります。王はグリッド(X1、Y1)からグリッド(X2、Y2)に行ってきましたどのように多くのステップの最小値を必要としますか?独自の散歩をしてみてください。(| X2-X1 |、あなたはステップの最小数は常に最大であるでしょう | Y2-Y1 |) のステップ。チェビシェフ距離と呼ばれる距離測定方法の似たようなものがあります。
カット及びB(X2、Y2)チェビシェフ距離と(A)2つの2次元平面(X1、Y1)

(2)2つのn次元ベクトルは、(X11、X12、...、 X1N) 及びb(X21、X22、...、 X2N)が間チェビシェフ距離を切断

  し、この式の別の同等の形態

       2を参照しません式は同等ですか?注意:証明するための方法及びスクイーズ法をスケーリングしてみます。

Pythonの実装では:

コードをコピー
NP numpyのインポートAS 
X = np.random.random(10)
Y = np.random.random(10)

式解決策によれば:#法
D1 = np.max(np.abs(XY)) 
方法2:scipyのダウンロードライブラリを解決
scipy.spatial.distanceインポートPDISTのから
X-np.vstack =([X、Y])
D2 = PDIST(X、 'チェビシェフ')
コードをコピー

4.  ミンコフスキー距離(ミンコフスキー距離)
距離ミンコフスキー距離ではなく、設定された距離を定義します。
(1)ミンコフスキー距離定義
       (X11、X12、...、二つのn次元変数 X1N) 及びb(X21、X22、...、 X2N) :ミンコフスキー距離は次のように定義されている間

それはまたのように記述することができます


ここでpは変数のパラメータです。
P = 1は、マンハッタン距離である場合
、P = 2は、ユークリッド距離である場合
、P→∞、チェビシェフ距離が
       可変パラメータに応じては、ミンコフスキー距離は、クラスの距離を表すことができます。
(2)短所ミンコフスキー距離
  、マンハッタン距離、ユークリッド距離及びチェビシェフ距離を含むミンコフスキー距離重大な欠点があります。
  たとえば、次のサンプル次元(身長、体重)、前記量範囲50〜60は、三つのサンプルが190から150までの高さの範囲が存在する:(180,50)、B( 190,50)、C(180、 60)。だから、aとbの間分の距離(両方のマンハッタン距離、ユークリッド距離やチェビシェフ距離)10センチメートル10キロの重さ、それの高さとCの間のミンコフスキー距離に等しいが、本当に同等?これらのサンプル間の類似性を測定する分の距離となるように非常に問題があります。
       同じ外観として「単位」であり、各成分(スケール)の(1)寸法:単に、メイン2から最小の欠点を置きます。(2)異なっていてもよい(所望の、分散、等)の各成分の分布を考慮していません。

Python実装で:

コードをコピー
NP numpyのインポートAS 
X = np.random.random(10)
Y = np.random.random(10)

式を解く、P = 2:#方法A 
D1 = np.sqrt(np.sum(np.square(XY ))) 
方法2:ソルバライブラリscipyのダウンロード
scipy.spatial.distanceインポートPDISTから
X-np.vstack =([X、Y])
D2 = PDIST(X-、 'ミンコフスキー'、P = 2)
コードをコピー

正規化されたユークリッド距離 (標準化ユークリッド距離)
(1)標準的なユークリッド距離で定義された
  正規化ユークリッド距離がなさから単純なユークリッド距離の開発のために不利です。標準のユークリッド距離を考える:部品データの二次元分布はすべての権利、同じではありませんので!I最初の個々の成分は、それに等しい分散を意味する「標準化」されています。どのように多くの平均と分散正規化しますか?ここでまずXの「正規化された変数は」として表現され、それはサンプルセットXの平均値(平均)Mであると仮定される、標準偏差(標準偏差)がsである統計的知識点を確認:

  正規化した値=(正規化された値の前に-成分)平均/標準差動成分
  の単純な派生スルーは2つのN次元ベクトル(X11、X12、...、得ることができる X1N) 及びb(X21、X22、...、X2nを間の正規化ユークリッド距離)のを式:

  重量として分散の逆数場合、この式はのように見ることができる加重ユークリッド距離(重み付きユークリッド距離)

Python実装で:

コードをコピー
import numpy as np
x=np.random.random(10)
y=np.random.random(10)

X=np.vstack([x,y])

#方法一:根据公式求解
sk=np.var(X,axis=0,ddof=1)
d1=np.sqrt(((x - y) ** 2 /sk).sum())

#方法二:根据scipy库求解
from scipy.spatial.distance import pdist
d2=pdist(X,'seuclidean')
コードをコピー

6. 马氏距离(Mahalanobis Distance)
(1)马氏距离定义
       有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为:

       而其中向量Xi与Xj之间的马氏距离定义为:

       若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了:

       也就是欧氏距离了。
  若协方差矩阵是对角矩阵,公式变成了标准化欧氏距离。
python 中的实现:

コードをコピー
import numpy as np
x=np.random.random(10)
y=np.random.random(10)

#马氏距离要求样本数要大于维数,否则无法求协方差矩阵
#此处进行转置,表示10个样本,每个样本2维
X=np.vstack([x,y])
XT=X.T

#方法一:根据公式求解
S=np.cov(X)   #两个维度之间协方差矩阵
SI = np.linalg.inv(S) #协方差矩阵的逆矩阵
#马氏距离计算两个样本之间的距离,此处共有10个样本,两两组合,共有45个距离。
n=XT.shape[0]
d1=[]
for i in range(0,n):
    for j in range(i+1,n):
        delta=XT[i]-XT[j]
        d=np.sqrt(np.dot(np.dot(delta,SI),delta.T))
        d1.append(d)
        
#方法二:根据scipy库求解
from scipy.spatial.distance import pdist
d2=pdist(XT,'mahalanobis')
コードをコピー

马氏优缺点:

マハラノビス距離は、共分散行列を説明する上から引き出すことができる全体的なサンプルに基づく計算は、異なる二つに同じ2つのサンプルを取る場合は1)、すなわち、です全体として、マハラノビス距離は、一般に誘導される最後の2つのサンプル間で計算されるが、同一の全体的な共分散行列が起こるの両方を除いて同じではありません。

2)マハラノビス距離を算出する処理が、サンプル数、サンプルの全体的な数の寸法要件よりも大きい場合、またはこの場合には存在しない全体的な標本共分散行列の逆行列を得るために、ユークリッド距離を用いて計算することができます。

3)別の場合には、条件は、3つのサンプル点(3,4)、(5,6)及び(7全体的なサンプルを超えるサンプルの数が、まだ存在しない共分散行列の逆行列の大きさを満たすためにサンプルは、それが配置されているラインの平面に三次元空間であったため8)、これはあります。この場合、ユークリッド距離計算を使用。

4)実際には、「サンプルの全体数は、サンプルの寸法よりも大きい。」この条件は容易に満たされ、ケース3である)すべてのサンプル点の出現に記載されているように、ほとんどの場合に、稀であり、マハラノビス距離が円滑に計算されるが、マハラノビス距離が不安定で、不安定性の源は、マハラノビス距離とユークリッド距離で最大の違いである共分散行列です。

利点:それは寸法に影響を与えていない、測定単位マハラノビス2点間の距離は、元のデータとは無関係である。標準化されたセンターによって計算されたデータとデータの間(すなわち、生データの平均値との差)は、2つの点のマハラノビス距離と同じ。マハラノビス距離は、また、変数間の干渉相関を除去することができます。短所:短所は、変数の小さな変化が役割を誇張ということです。

参考:

http://www.cnblogs.com/daniel-D/p/3244718.html

http://www.cnblogs.com/likai198981/p/3167928.html

おすすめ

転載: www.cnblogs.com/jiangkejie/p/11595905.html