[PYTHON] Wie man Maharanobis Entfernung findet

Maharanobis Entfernung

d=(x-\mu)^T\Sigma^{-1}(x-\mu)

$ x $ ist der Vektor, für den Sie den Abstand zur Datengruppe ermitteln möchten. $ \ Mu $ ist der Durchschnittswert der Datengruppe. $ \ Sigma ^ {-1} $ ist die Umkehrung der Kovarianzmatrix der Datengruppe. Unter Verwendung der Choleskey-Zerlegung kann die Gleichung wie folgt transformiert werden.

\begin{eqnarray}
d &=& (x-\mu)^T\Sigma^{-1}(x-\mu) \\
  &=& (x-\mu)^T(LL^T)^{-1}(x-\mu) \\
  &=& (L^{-1}(x-\mu))^T(L^{-1}(x-\mu)) \\
  &=& z^Tz
\end{eqnarray}

$ L $ ist die untere Dreiecksmatrix, die durch die Choleskey-Zerlegung erhalten wird. Wenn Sie $ z = (L ^ {-1} (x- \ mu)) $ setzen und dies finden, müssen Sie nur das innere Produkt berechnen.

Implementierung

Implementieren Sie das Obige in Python.

import numpy as np
from scipy.linalg import solve_triangular

def mahalanobis(x, mu, sigma):
    L = np.linalg.cholesky(sigma)
    d = x - mu
    z = solve_triangular(
        L, d.T, lower=True, check_finite=False,
        overwrite_b=True)
    squared_maha = np.sum(z * z, axis=0)
    return squared_maha

$ L $ finden Sie in numpys linalg.cholesky. $ z $ befindet sich in scipys linalg.solve_triangular.

Referenz

Recommended Posts

Wie man Maharanobis Entfernung findet
So finden Sie große Dateien unter Linux
So finden Sie den Bereich des Boronoi-Diagramms
So finden Sie die Korrelation für kategoriale Variablen
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Schaben 2 Wie man kratzt
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
So installieren Sie Python
Verwendung von Pandas 2
Wie man PyPI liest
So installieren Sie pip
Verwendung von Virtualenv
Verwendung von numpy.vectorize
So aktualisieren Sie easy_install
So installieren Sie archlinux
Verwendung von pytest_report_header
Wie man Gunicorn neu startet
So installieren Sie Python
Wie zum virtuellen Host
Wie man Selen debuggt
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Wie man JSON liest
Wie man x-means benutzt
Verwendung von WikiExtractor.py
So aktualisieren Sie Spyder
Verwendung von IPython
So installieren Sie BayesOpt
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Verwendung von TokyoTechFes2015
Wie benutzt man venv
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Wie man Dotfiles züchtet
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
"Wie man Fukashigi zählt"
So installieren Sie Nbextensions
Verwendung von OptParse
Verwendung von return
So installieren Sie Prover9
So bedienen Sie NumPy
Wie man Imutils benutzt
[Neueste Version 2020.8] So installieren Sie Python
So finden Sie die optimale Anzahl von Clustern für k-means
So schätzen Sie die Kerneldichte
Verwendung von Qt Designer
[IPython] Freigeben eines IPython-Notizbuchs
So installieren Sie Python [Windows]
Verwendung der Suche sortiert
[gensim] Verwendung von Doc2Vec