Home  >  Article  >  Backend Development  >  How to implement Mahalanobis distance in Python

How to implement Mahalanobis distance in Python

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

This time I will bring you PythonHow to implement the Mahalanobis distance, what are the precautions for implementing the Mahalanobis distance algorithm in Python, the following is a practical case, let's take a look.

The example in this article describes the calculation of Mahalanobis distance algorithm implemented in Python. Share it with everyone for your reference, the details are as follows:

I wrote the function and called

python to implement the Mahalanobis distance source code :

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

Running results:

# I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website!

Recommended reading:

How to convert a python string into a two-dimensional array

Event emitter’s listening event

The above is the detailed content of How to implement Mahalanobis distance in Python. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn