Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Mahalanobis-Distanz in Python

So implementieren Sie die Mahalanobis-Distanz in Python

php中世界最好的语言
php中世界最好的语言Original
2018-04-09 10:12:358949Durchsuche

Dieses Mal werde ich Ihnen zeigen, wie man die Mahalanobis-Distanz in Python implementiert und welche Vorsichtsmaßnahmen für die Implementierung des Mahalanobis-Distanzalgorithmus in Python gelten. Das Folgende ist ein praktischer Fall Schauen Sie mal rein.

Das Beispiel in diesem Artikel beschreibt die Berechnung des in Python implementierten Mahalanobis-Distanzalgorithmus. Teilen Sie es allen als Referenz mit. Die Details lauten wie folgt:

Ich habe die -Funktion geschrieben und die

Python-Implementierung aufgerufen des Mahalanobis-Distanz-Quellcodes:

# encoding: utf-8
from future import pision
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import numpy as np
def mashi_distance(x,y):
  print x
  print y
  #马氏距离要求样本数要大于维数,否则无法求协方差矩阵
  #此处进行转置,表示10个样本,每个样本2维
  X=np.vstack([x,y])
  print X
  XT=X.T
  print XT
  #方法一:根据公式求解
  S=np.cov(X)  #两个维度之间协方差矩阵
  SI = np.linalg.inv(S) #协方差矩阵的逆矩阵
  #马氏距离计算两个样本之间的距离,此处共有4个样本,两两组合,共有6个距离。
  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))
      print d
      d1.append(d)
if name == 'main':
  # 第一列
  x = [3, 5, 2, 8]
  # 第二列
  y = [4, 6, 2, 4]
  mashi_distance(x,y)

Laufergebnis:

Ich glaube, Sie haben die Methode gemeistert, nachdem Sie den Fall in diesem Artikel gelesen haben Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

So konvertieren Sie einen Python-String in ein zweidimensionales Array

Abhörereignis des Ereignisemitters

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Mahalanobis-Distanz in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn