series_cosine_similarity_fl()
Oblicza podobieństwo cosinusowe dwóch wektorów liczbowych.
Funkcja series_cosine_similarity_fl()
jest funkcją zdefiniowaną przez użytkownika (UDF), która przyjmuje wyrażenie zawierające dwie dynamiczne tablice liczbowe jako dane wejściowe i oblicza podobieństwo cosinusu.
Uwaga
Użyj funkcji natywnej series_cosine_similarity() zamiast funkcji opisanej w tym dokumencie. Funkcja natywna zapewnia tę samą funkcjonalność i jest lepsza pod kątem wydajności i skalowalności. Ten dokument jest udostępniany tylko do celów referencyjnych.
Składnia
series_cosine_similarity_fl(
vec1,
vec2,
[ vec1_size [,
vec2_size ]])
Dowiedz się więcej o konwencjach składniowych.
Parametry
Nazwa | Typ | Wymagane | Opis |
---|---|---|---|
vec1 | dynamic |
✔️ | Tablica wartości liczbowych. |
vec2 | dynamic |
✔️ | Tablica wartości liczbowych o tej samej długości co vec1. |
vec1_size | real |
Rozmiar vec1. Jest to odpowiednik pierwiastek kwadratowy produktu kropki wektora z samym sobą. | |
vec2_size | real |
Rozmiar vec2. |
Definicja funkcji
Funkcję można zdefiniować, osadzając jej kod jako funkcję zdefiniowaną przez zapytanie lub tworząc ją jako funkcję przechowywaną w bazie danych w następujący sposób:
Zdefiniuj funkcję przy użyciu następującej instrukcji let. Nie są wymagane żadne uprawnienia.
Ważne
Instrukcja let nie może być uruchamiana samodzielnie. Po nim musi znajdować się instrukcja wyrażenia tabelarycznego. Aby uruchomić działający przykład series_cosine_similarity_fl()
polecenia , zobacz Przykład.
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.
Przykład
Aby użyć funkcji zdefiniowanej przez zapytanie, wywołaj ją po definicji funkcji osadzonej.
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
Dane wyjściowe
kąt |
---|
45 |
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla