Maison  >  Article  >  développement back-end  >  Comment implémenter la distance Mahalanobis en Python

Comment implémenter la distance Mahalanobis en Python

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

Cette fois, je vais vous expliquer comment implémenter la distance Mahalanobis en Python et quelles sont les précautions pour implémenter l'algorithme de distance Mahalanobis en Python Voici un cas pratique, prenons un. regarder.

L'exemple de cet article décrit le calcul de l'algorithme de distance Mahalanobis implémenté en Python. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

J'ai écrit la fonction et j'ai appelé l'implémentation

python du code source à distance Mahalanobis :

# 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)

Résultats d'exploitation :

Je crois que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour plus d'informations intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web PHP chinois !

Lecture recommandée :

Comment convertir une chaîne python en un tableau bidimensionnel

Événement d'écoute de l'émetteur d'événement

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn