Pular para o conteúdo principal
Versões: 0.2.x

Distance

Funções utilitárias para distância normalizada entre matrizes com decoradores numba.

def hamming(...)

def hamming(u: npt.NDArray, v: npt.NDArray) -> np.float64:

Função para calcular a distância de Hamming normalizada entre dois pontos.

(x1y1)+(x2y2)++(xnyn)n\frac{(x_1 \neq y_1) + (x_2 \neq y_2) + \cdots + (x_n \neq y_n)}{n}

Parameters:

  • u (npt.NDArray): Coordenadas do primeiro ponto
  • v (npt.NDArray): Coordenadas do segundo ponto.

Returns:

  • Distância (float) entre os dois pontos.

def euclidean(...)

def euclidean(u: npt.NDArray[np.float64], v: npt.NDArray[np.float64]) -> np.float64:

Função para calcular a distância euclidiana normalizada entre dois pontos.

(X1X1)2+(Y2Y2)2++(YnYn)2\sqrt{(X_{1} - X_{1})^2 + (Y_{2} - Y_{2})^2 + \cdots + (Y_{n} - Y_{n})^2}

Parameters:

  • u (npt.NDArray): Coordenadas do primeiro ponto
  • v (npt.NDArray): Coordenadas do segundo ponto.

Returns:

  • Distância (float) entre os dois pontos.

def cityblock(...)

def cityblock(u: npt.NDArray[np.float64], v: npt.NDArray[np.float64]) -> np.float64:

Função para calcular a distância Manhattan normalizada entre dois pontos.

(X1X1+Y2Y2++YnYn)n\frac{(|X_{1} - X_{1}| + |Y_{2} - Y_{2}| + \cdots + |Y_{n} - Y_{n}|)}{n}

Parameters:

  • u (npt.NDArray): Coordenadas do primeiro ponto
  • v (npt.NDArray): Coordenadas do segundo ponto.

Returns:

  • Distância (float) entre os dois pontos.

def minkowski(...)

def minkowski(u: npt.NDArray[np.float64], v: npt.NDArray[np.float64], p: float = 2.0):

Função para calcular a distância de Minkowski normalizada entre dois pontos.

((X1Y1p+X2Y2p+...+XnYnp)1/p)/n(( |X₁ - Y₁|p + |X₂ - Y₂|p + ... + |X_n - Y_n|p) ¹/ₚ) / n

Parameters:

  • u (npt.NDArray): Coordenadas do primeiro ponto.
  • v (npt.NDArray): Coordenadas do segundo ponto.
  • p (float): O parâmetro p define o tipo de distância a ser calculada:
    • p = 1: Distância Manhattan — soma das diferenças absolutas.
    • p = 2: Distância Euclidiana — soma das diferenças ao quadrado (raiz quadrada).
    • p > 2: Distância Minkowski com uma penalidade crescente à medida que p aumenta.

Returns:

  • Distância (float) entre os dois pontos.

def compute_metric_distance(...)

def compute_metric_distance(
u: npt.NDArray[np.float64],
v: npt.NDArray[np.float64],
metric: int,
p: np.float64 = 2.0
) -> np.float64:

Função para calcular a distância entre dois pontos pela métrica escolhida.

Parameters:

  • u (npt.NDArray): Coordenadas do primeiro ponto.
  • v (npt.NDArray): Coordenadas do segundo ponto.
  • metric (int): Métrica de distância a ser utilizada. Opções disponíveis: [0 (Euclidean), 1 (Manhattan), 2 (Minkowski)].
  • p (float): Parâmetro da métrica de Minkowski (utilizado apenas se metric for "minkowski").

Returns:

  • Distância (double) entre os dois pontos com a métrica selecionada.

def min_distance_to_class_vectors(...)

def min_distance_to_class_vectors(
x_class: npt.NDArray,
vector_x: npt.NDArray,
metric: int,
p: float = 2.0
) -> float:

Calcula a menor distância entre um vetor de entrada e os vetores de uma classe.

Parameters:

  • x_class (npt.NDArray): Array contendo os vetores da classe com os quais o vetor de entrada será comparado. Formato esperado: (n_amostras, n_características).
  • vector_x (npt.NDArray): Vetor a ser comparado com os vetores da classe. Formato esperado: (n_características,).
  • metric (int): Métrica de distância a ser utilizada. Opções disponíveis: [0 (Euclidean), 1 (Manhattan), 2 (Minkowski)].
  • p (float): Parâmetro da métrica de Minkowski (utilizado apenas se metric for "minkowski").

Returns:

  • float: A menor distância calculada entre o vetor de entrada e os vetores da classe.
  • Retorna -1.0 se as dimensões de entrada forem incompatíveis.

def get_metric_code(...)

def get_metric_code(metric: str) -> int:

Retorna o código numérico associado a uma métrica de distância.

Parameters:

  • metric (str): Nome da métrica. Pode ser "euclidean", "manhattan", "minkowski" ou "hamming".

Raises

  • ValueError: Se a métrica informada não for suportada.

Returns:

  • int: Código numérico correspondente à métrica.