series_cosine_similarity_fl()
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Calcula a similaridade de cosseno de dois vetores numéricos.
A função series_cosine_similarity_fl()
é uma função definida pelo usuário (UDF) que recebe uma expressão contendo duas matrizes numéricas dinâmicas como entrada e calcula sua similaridade de cosseno.
Observação
Use a função nativa series_cosine_similarity() em vez da função descrita neste documento. A função nativa fornece a mesma funcionalidade e é melhor para desempenho e escalabilidade. Este documento é fornecido apenas para fins de referência.
Sintaxe
series_cosine_similarity_fl(
vec1,
vec2,
[ vec1_size [,
vec2_size ]])
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
vec1 | dynamic |
✔️ | Uma matriz de valores numéricos. |
vec2 | dynamic |
✔️ | Uma matriz de valores numéricos com o mesmo comprimento de vec1. |
vec1_size | real |
O tamanho de vec1. Isso é equivalente à raiz quadrada do produto escalar do vetor consigo mesmo. | |
vec2_size | real |
O tamanho de vec2. |
Definição de função
Você pode definir a função inserindo seu código como uma função definida por consulta ou criando-a como uma função armazenada em seu banco de dados, da seguinte maneira:
Defina a função usando a instrução let a seguir. Nenhuma permissão é necessária.
Importante
Uma instrução let não pode ser executada sozinha. Ele deve ser seguido por uma instrução de expressão tabular. Para executar um exemplo funcional de series_cosine_similarity_fl()
, consulte Exemplo.
let series_cosine_similarity_fl=(vec1:dynamic, vec2:dynamic, vec1_size:real=double(null), vec2_size:real=double(null))
{
let dp = series_dot_product(vec1, vec2);
let v1l = iff(isnull(vec1_size), sqrt(series_dot_product(vec1, vec1)), vec1_size);
let v2l = iff(isnull(vec2_size), sqrt(series_dot_product(vec2, vec2)), vec2_size);
dp/(v1l*v2l)
};
// Write your query to use the function here.
Exemplo
Para usar uma função definida por consulta, invoque-a após a definição da função inserida.
let series_cosine_similarity_fl=(vec1:dynamic, vec2:dynamic, vec1_size:real=double(null), vec2_size:real=double(null))
{
let dp = series_dot_product(vec1, vec2);
let v1l = iff(isnull(vec1_size), sqrt(series_dot_product(vec1, vec1)), vec1_size);
let v2l = iff(isnull(vec2_size), sqrt(series_dot_product(vec2, vec2)), vec2_size);
dp/(v1l*v2l)
};
let s1=pack_array(0, 1);
let s2=pack_array(sqrt(2), sqrt(2));
print angle=acos(series_cosine_similarity_fl(s1, s2))/(2*pi())*360
Saída
angle |
---|
45 |