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

distance

Funções utilitárias para cálculo de distância entre vetores com decoradores numba.

Módulo: aisp.utils.distance
Importação: from aisp.utils import distance

Funções

hamming

@njit([(types.boolean[:], types.boolean[:])], cache=True)
def hamming(u: npt.NDArray[np.bool_], v: npt.NDArray[np.bool_]) -> float64:
...

Calcula a distância de Hamming 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}

Parâmetros

NomeTipoPadrãoDescrição
unpt.NDArray[np.bool_]-Coordenadas do primeiro ponto.
vnpt.NDArray[np.bool_]-Coordenadas do segundo ponto.

Returns

TipoDescrição
float64Distância de Hamming entre dois pontos.

euclidean

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

Calcula a distância de Euclidean 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}

Parâmetros

NomeTipoPadrãoDescrição
unpt.NDArray[float64]-Coordenadas do primeiro ponto.
vnpt.NDArray[float64]-Coordenadas do segundo ponto.

Returns

TipoDescrição
float64Distância de Euclidean entre dois pontos.

cityblock

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

Calcula a distância de Manhattan entre dois pontos.

X1Y1+X2Y2++XnYn|X_{1} - Y_{1}| + |X_{2} - Y_{2}| + \cdots + |X_{n} - Y_{n}|

Parâmetros

NomeTipoPadrãoDescrição
unpt.NDArray[float64]-Coordenadas do primeiro ponto.
vnpt.NDArray[float64]-Coordenadas do segundo ponto.

Returns

TipoDescrição
float64Distância de Manhattan entre dois pontos.

minkowski

@njit()
def minkowski(
u: npt.NDArray[float64],
v: npt.NDArray[float64],
p: float = 2.0
) -> float64:
...

Calcula a distância de Minkowski entre dois pontos.

(X1Y1p+X2Y2p++XnYnp)1p(|X_{1} - Y_{1}|^p + |X_{2} - Y_{2}|^p + \cdots + |X_{n} - Y_{n}|^p)^\frac{1}{p}|

Parâmetros

NomeTipoPadrãoDescrição
unpt.NDArray[float64]-Coordenadas do primeiro ponto.
vnpt.NDArray[float64]-Coordenadas do segundo ponto.
pfloat2.0Parâmetro que define o tipo de distância a ser calculada.
Parâmetro p
  • p = 1: distância Manhattan - soma das diferenças
  • p = 2: distância Euclidean - soma dos quadrados (raiz quadrada).
  • p > 2: distância Minkowski com penalização crescente conforme p aumenta.

Returns

TipoDescrição
float64Distância de Minkowski entre dois pontos.

compute_metric_distance

@njit([(types.float64[:], types.float64[:], types.int32, types.float64)], cache=True)
def compute_metric_distance(
u: npt.NDArray[float64],
v: npt.NDArray[float64],
metric: int,
p: float = 2.0
) -> float64:
...

Calcula a distância entre dois pontos com base na métrica escolhida.

Parâmetros

NomeTipoPadrãoDescrição
unpt.NDArray[float64]-Coordenadas do primeiro ponto.
vnpt.NDArray[float64]-Coordenadas do segundo ponto.
metricint-Métrica de distância que será usada. Opções: 0 (Euclidean), 1 (Manhattan), 2 (Minkowski)
pfloat2.0Parâmetro que define o tipo de distância a ser calculada

Returns

TipoDescrição
float64Distância entre os dois pontos com a métrica selecionada.

min_distance_to_class_vectors

@njit([(types.float64[:, :], types.float64[:], types.int32, types.float64)], cache=True)
def min_distance_to_class_vectors(
x_class: npt.NDArray[float64],
vector_x: npt.NDArray[float64],
metric: int,
p: float = 2.0,
) -> float:
...

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

Parâmetros

NomeTipoPadrãoDescrição
x_classnpt.NDArray[float64]-Array contendo os vetores da classe a serem comparados com o vetor de entrada. Formato esperado: (n_samples, n_features).
vector_xnpt.NDArray[float64]-Vetor a ser comparado com os vetores da classe. Formato esperado: (n_features,).
metricint-Métrica de distância a ser usada. Opções: 0 ("euclidean"), 1 ("manhattan"), 2 ("minkowski") or ("hamming")
pfloat2.0Parâmetro da distância de Minkowski (usado apenas quando metric="minkowski").

Returns

TipoDescrição
floatA menor distância calculada entre o vetor de entrada e os vetores da classe. Retorna -1.0 se as dimensões forem incompatíveis.

get_metric_code

def get_metric_code(metric: str) -> int:
...

Obtém o valor associado a uma métrica de distância.

Parâmetros

NomeTipoPadrãoDescrição
metricstr-Nome da métrica. Pode ser "euclidean", "manhattan", "minkowski" or "hamming".

Returns

TipoDescrição
intNúmero correspondente à métrica.

Exceções

ExceçãoDescrição
ValueErrorSe a métrica fornecida não for suportada.