Dekompozycja wartości pojedynczej jest jedną z najważniejszych pojęć w algebrze liniowej. Zrozumienie liczby pojedynczej rozkładu wartości (SVD) obejmuje znajomość powiązanych pojęć, takich jak matryce, typy macierzy i transformacje matrycy. Ze względu na powiązania między osobliwym rozkładem macierzy a innymi liniowymi tematami algebraicznymi, nauka pomysłu stała się trudniejsza. W tym artykule odkryjesz definicję rozkładu wartości osobliwej i szczegółowych przykładów rozkładu macierzy 2*2 i 3*3. Podejście SVD zostanie dokładnie wyjaśnione w tym poście. Możesz znaleźć wszystkie niezbędne materiały tutaj, zaczynając od wprowadzenia i przejścia do wielu przykładów.
Co to jest rozkład wartości liczby pojedynczej?
Gdy macierz jest uwzględniona w trzy różne matryce, mówi się, że rozkłada się na wartości osobliwe. Ta koncepcja jest znana jako SVD, która oznacza szczególną rozkład wartości. W rezultacie, gdy macierz „One” jest uwzględniany w ilocie trzech macierzy, rozkładu wartości osobowej macierzy „One” może być zapisane jako jeden = UDVT. W tym przypadku kolumny u i v są ortonormalne, podczas gdy matryca D jest przekątna, ma prawdziwe pozytywne wpisy.
Składnia metody SVD
Składnia metody SVD ma pewne parametry.
Teraz masz podstawowe zrozumienie metody SVD i jej składni. Omówmy kilka przykładów korzystania z funkcji.
Przykład 1
W pierwszym przykładzie tego artykułu zapewniamy przykładowy kod stosujący metodę SVD. Zobaczmy linię kodu po wierszu.
Na poniższym zrzucie ekranu widać, że zaimportowaliśmy bibliotekę Numpy, która jest dostępna w Python. Odbywa się to z prostym kodem „importu Numpy” i zwykle piszemy to w pierwszym wierszu kodu. Następnie stworzyliśmy tablicę o nazwie „arr_data” za pomocą Numpy.Metoda tablicy. Tablica zawiera [1, 2, 3, 4, 5], [11, 22, 33, 11, 23], [6, 8, 10, 2, 4] i [5, 7, 3, 5, 3 ] wartości.
Następnie użyliśmy dwóch instrukcji drukowania, aby wyświetlić oryginalną tablicę. W następnym wierszu kodu użyliśmy Numpy.Linla.Metoda SVD na powyższej tablicy utworzonej. Tutaj ustawiliśmy parametr Full_matrices na „Fałsz”. W ostatniej sekcji używane są kolejne dwa instrukcje print (). Jedna instrukcja wydruku, która wyświetli „współczynnik utworzonej tablicy według SVD:” i drugą instrukcję drukowania, aby wyświetlić wynik na ekranie wyjściowym.
Importuj Numpy
Arr_data = Numpy.tablica ([[1, 2, 3, 4, 5], [11, 22, 33, 11, 23],
[6, 8, 10, 2, 4], [5, 7, 3, 5, 3]],
Dtype = Numpy.float32)
Drukuj („Oto oryginalna tablica:”)
print (arr_data)
U, s, v = numpy.Linalg.svd (arr_data, full_matrica = false)
Drukuj („\ nFactor utworzonej tablicy przez svd:”)
print ("\ nu =", u, "\ n \ ns =", s, "\ n \ nv =", v)
Ekran wyniku jest dołączony, w którym można zobaczyć oryginalną tablicę i współczynnik tej tablicy za pomocą metody SVD.
Przykład 2
Oto drugi przykład tego artykułu, w którym zastosowana jest ta sama koncepcja, ale na innej tablicy zawierającej różne wartości. W drugim wierszu kodu widać, że utworzyliśmy tablicę o nazwie „Arr_val” z Numpy.Metoda tablicy. Tablica zawiera [7, 1, 2], [3, 7, 3] i [2, 4, 7] wartości. Następnie wyświetlana jest oryginalna tablica, dzięki czemu możesz łatwo zobaczyć różnicę między oryginalną tablicą a wygenerowanym wynikiem. Numpy.Linalg.Metoda SVD jest stosowana później do określonej tablicy, a wynik jest wyświetlany.
Importuj Numpy
Arr_val = Numpy.tablica ([[7, 1, 2], [3, 7, 3],
[2, 4, 7]], Dtype = Numpy.float32)
Drukuj („Oto oryginalna tablica:”)
print (arr_val)
U, s, v = numpy.Linalg.svd (arr_val, full_matrica = false)
Drukuj („\ nFactor utworzonej tablicy metodą SVD:”)
print („\ nu =”, u, „\ n \ ns =”, s, „\ n \ nv =”, v)
Oto dane wyjściowe, w którym można zobaczyć oryginalną tablicę i współczynnik tej tablicy obliczonej metodą SVD.
Przykład 3
Tutaj inna tablica jest przechowywana w „Arr_3r & D”, A jego wartości to [12, 3], [4, 7]. Reszta kodu tego programu jest prawie taka sama jak powyżej. Możesz porównać dane wyjściowe wygenerowane przez ten kod i dane wyjściowe podane przez poprzednie przykłady. Wyjście różni się w zależności od dostarczonej tablicy wejściowej o kształcie i rozmiarze.
Importuj Numpy
ARR_3RD = Numpy.tablica ([[12, 3], [4, 7]], Dtype = Numpy.float32)
Drukuj („Oto oryginalna tablica:”)
Drukuj (ARR_3RD)
U, s, v = numpy.Linalg.svd (arr_3rd, full_matrica = false)
Drukuj („\ nFactor utworzonej tablicy metodą SVD:”)
print („\ nu =”, u, „\ n \ ns =”, s, „\ n \ nv =”, v)
Oto następujący wynik:
Przykład 4
To jest ostatni przykład tego artykułu, a tutaj używamy dwóch oddzielnych tablic 2D. Zobaczmy linię kodu po wierszu na poniższym zrzucie ekranu.
Tutaj zaczęliśmy od importu Numpy i Numpy.Moduły Linalg, które zapewniają całą funkcjonalność wymaganą dla algebry liniowej. Następnie tworzone są dwie tablice 2D z Numpy.losowy.Metoda Randn. Te tablice są przechowywane w zmiennych „First_arr” i „seconc_arr”. Następnie do wyświetlania oryginalnych tablic służy instrukcji drukowania. Linia kodowania tego jest „Drukuj („ Oto oryginalne tablice: \ n ”, First_ARR)” i „Print („ Oto oryginalne tablice: \ n ”, second_arr)”.
Teraz użyliśmy LNG.Metoda SVD w danej tablicy i ustaw opcję Full_MatriCes na „True”. W ostatniej sekcji używane są cztery kolejne instrukcje drukowania. Pierwsza instrukcja drukowania wyświetli „Tutaj możesz zobaczyć kształt wszystkich zwróconych wartości:”, a reszta instrukcji drukowania wyświetli kształt wartości zwróconych przez wykonaną funkcję. Zobacz pełny zrzut ekranu kodu poniżej:
Importuj Numpy
Importuj Numpy.Linalg jako lng
First_arr = Numpy.losowy.Randn (2, 5) + 1J*Numpy.losowy.Randn (2, 5)
second_arr = b = numpy.losowy.Randn (2, 5, 7, 3) + 1J*Numpy.losowy.Randn (2, 5, 7, 3)
Drukuj („Oto oryginalne tablice: \ n”, First_arr)
Drukuj („Oto oryginalne tablice: \ n”, Second_ARR)
u, s, vh = lng.svd (First_arr, Full_MatriCes = true)
Drukuj („Tutaj możesz zobaczyć kształt wszystkich zwróconych wartości: \ n”)
wydrukuj („u =”, u.kształt)
druk („s =”, s.kształt)
wydrukuj („vh =”, vh.kształt)
W celu uzyskania odniesienia są następujące kompletne zrzuty ekranu wyjściowego z poprzedniego kodu:
Wniosek
SVD jest szeroko wykorzystywane do rozwiązywania problemów w fizyce, statystyce, uczeniu maszynowym i innych dziedzinach. W tym krótkim eseju omówiliśmy definicję i składnię metody SVD. Dodatkowo do zilustrowania głównego punktu postu używane są różne instancje 2*2 i 3*3. Możesz użyć tej strony jako zasobu, aby poznać podstawy podejścia SVD i dlaczego jest ona tak często stosowana.