Wektory, matryce i tablice z Pythonem

Wektory, matryce i tablice z Pythonem
W tej lekcji przyjrzymy się schludnym wskazówkom i sztuczkom do zabawy z wektorami, matrycami i tablicami za pomocą Numpy Library w Python. Ta lekcja jest bardzo dobrym punktem wyjścia, jeśli zaczynasz w nauki o danych i potrzebujesz wprowadzającego matematycznego przeglądu tych komponentów i tego, jak możemy się z nimi bawić za pomocą Numpy w kodzie.

Biblioteka Numpy pozwala nam wykonywać różne operacje, które należy wykonywać w strukturach danych często używanych w uczeniu maszynowym i naukach danych, takich jak wektory, matryce i tablice. Wyświetlimy tylko najczęstsze operacje z Numpy, które są używane w wielu rurociągach uczenia maszynowego. Na koniec należy pamiętać, że Numpy to tylko sposób na wykonywanie operacji, więc pokazywane przez nas operacje matematyczne są głównym celem tej lekcji, a nie samego pakietu Numpy. Zacznijmy.

Co to jest wektor?

Według Google, wektor to ilość ma kierunek, a także wielkość, zwłaszcza jako określanie pozycji jednego punktu w przestrzeni w stosunku do drugiego.

Wektory są bardzo ważne w uczeniu maszynowym, ponieważ nie tylko opisują wielkość, ale także kierunek funkcji. Możemy utworzyć wektor w Numpy z następującym fragmentem kodu:

importować Numpy jako NP
Row_vector = NP.tablica ([1,2,3])
print (Row_vector)

W powyższym fragmencie kodu utworzyliśmy wektor wierszy. Możemy również utworzyć wektor kolumny jako:

importować Numpy jako NP
col_vector = np.tablica ([[1], [2], [3]])
Drukuj (col_vector)

Tworzenie matrycy

Matrycę można po prostu zrozumieć jako tablicę dwuwymiarową. Możemy stworzyć matrycę z Numpy, tworząc wielowymiarową tablicę:

Matrix = NP.tablica ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
Drukuj (matryca)

Chociaż matryca jest dokładnie podobna do tablicy wielowymiarowej, Struktura danych macierzy nie jest zalecana Z dwóch powodów:

  1. Tablica jest standardem, jeśli chodzi o pakiet Numpy
  2. Większość operacji z tablicami Numpy zwraca, a nie macierz

Za pomocą rzadkiej macierzy

Aby przypomnieć, rzadka macierz to ta, w której większość elementów wynosi zero. Teraz wspólnym scenariuszem w zakresie przetwarzania danych i uczenia maszynowego jest przetwarzanie macierzy, w których większość elementów wynosi zero. Na przykład rozważ matrycę, której wiersze opisują każdy film na YouTube, a kolumny reprezentuje każdego zarejestrowanego użytkownika. Każda wartość reprezentuje, jeśli użytkownik obejrzał wideo, czy nie. Oczywiście większość wartości w tej macierzy wyniesie zero. Zaleta z rzadką matrycą jest to, że nie przechowuje wartości, które są zerowe. Powoduje to również ogromną przewagę obliczeniową i optymalizację przechowywania.

Utwórzmy tutaj macierz iskrową:

od Scipy Import rzadko
original_matrix = np.tablica ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
rzadkie_matrix = rzadkie.csr_matrix (oryginał_matrix)
druk (rzadki_matrix)

Aby zrozumieć, jak działa kod, przyjrzymy się wyjściu tutaj:

W powyższym kodzie użyliśmy funkcji Numpy do utworzenia Skompresowany rzadki rząd matryca, w której elementy niezerowe są reprezentowane przy użyciu indeksów opartych na zero. Istnieją różne rodzaje rzadkiej macierzy, na przykład:

  • Sprężona rzadka kolumna
  • Lista list
  • Słownik kluczy

Nie będziemy tu nurkować w innych rzadkich macierzach, ale wiedzą, że każdy z nich jest specyficzny i nikt nie można nazwać „najlepszym”.

Stosowanie operacji do wszystkich elementów wektorowych

Jest to powszechny scenariusz, gdy musimy zastosować wspólną operację do wielu elementów wektorowych. Można to zrobić, definiując lambda, a następnie wektoryzację tego samego. Zobaczmy ten sam fragment kodu:

Matrix = NP.szyk([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
MUL_5 = Lambda X: X * 5
Vectorized_Mul_5 = np.Vectorize (MUL_5)
Vectorized_Mul_5 (Matrix)

Aby zrozumieć, jak działa kod, przyjrzymy się wyjściu tutaj:

W powyższym fragmencie kodu użyliśmy funkcji Vectorize, która jest częścią biblioteki Numpy, aby przekształcić prostą definicję Lambda w funkcję, która może przetwarzać każdy element wektora. Należy zauważyć, że Vectorize jest tylko pętla nad elementami I nie ma to wpływu na wydajność programu. Numpy również pozwala nadawanie, Co oznacza, że ​​zamiast powyższego złożonego kodu moglibyśmy po prostu zrobić:

matryca * 5

A wynik byłby dokładnie taki sam. Najpierw chciałem pokazać złożoną część, w przeciwnym razie pominąłbyś sekcję!

Średnia, wariancja i odchylenie standardowe

Dzięki Numpy łatwo jest wykonywać operacje związane z statystykami opisowymi wektorów. Średnia wektora można obliczyć jako:

NP.średnia (matryca)

Wariancję wektora można obliczyć jako:

NP.var (matryca)

Odchylenie standardowe wektora można obliczyć jako:

NP.STD (Matrix)

Wyjście powyższych poleceń w danej matrycy podano tutaj:

Transpowanie matrycy

Transponowanie jest bardzo powszechną operacją, o której usłyszysz, ilekroć jesteś otoczony matrycami. Transponowanie to tylko sposób na wymianę wartości kolumnowych i wierszowych macierzy. Pamiętaj, że wektora nie można transponować Jako wektor to tylko zbiór wartości bez kategorii tych wartości na rzędy i kolumny. Należy pamiętać, że przekształcenie wektora wiersza w wektor kolumny nie jest transponujący (na podstawie definicji algebry liniowej, która jest poza zakresem tej lekcji).

Na razie znajdziemy pokój, przesuwając matrycę. Dostęp do transpozy macierzy z Numpy jest bardzo prosty:

matryca.T

Wyjście powyższego polecenia w danej matrycy podano tutaj:

Ta sama operacja można wykonać na wektorze wiersza, aby przekonwertować go na wektor kolumny.

Spłaszczanie matrycy

Możemy przekonwertować matrycę w jednowymiarową tablicę, jeśli chcemy przetworzyć jej elementy w sposób liniowy. Można to zrobić za pomocą następującego fragmentu kodu:

matryca.spłaszczyć()

Wyjście powyższego polecenia w danej matrycy podano tutaj:

Zauważ, że matryca spłaszczona jest tablicą jednowymiarową, po prostu liniową w modzie.

Obliczanie wartości własnych i wektorów własnych

Wektory własne są bardzo powszechnie używane w pakietach uczenia maszynowego. Tak więc, gdy funkcja transformacji liniowej jest prezentowana jako macierz, wektory x, wektory własne są wektorami, które zmieniają się tylko w skali wektora, ale nie jego kierunku. Możemy to powiedzieć:

XV = γV

Tutaj x jest kwadratową matrycą, a γ zawiera wartości własne. Ponadto V zawiera wektory własne. W przypadku Numpy łatwo jest obliczyć wartości własne i wektory własne. Oto fragment kodu, w którym pokazujemy to samo:

ocenia, evectors = np.Linalg.eig (matryca)

Wyjście powyższego polecenia w danej matrycy podano tutaj:

Produkty kropkowe wektorów

Produkty DOT wektorów to sposób na pomnożenie 2 wektorów. Opowiada o Ile wektorów jest w tym samym kierunku, W przeciwieństwie do produktu krzyżowego, który mówi wręcz przeciwnie, jak mało wektory są w tym samym kierunku (zwane ortogonalami). Możemy obliczyć produkt DOT dwóch wektorów podany w fragmencie kodu tutaj:

A = NP.tablica ([3, 5, 6])
B = NP.tablica ([23, 15, 1])
NP.DOT (A, B)

Wyjście powyższego polecenia w danych tablicach podano tutaj:

Dodawanie, odejmowanie i mnożenie macierzy

Dodawanie i odejmowanie wielu macierzy jest dość proste działanie w matrycach. Istnieją dwa sposoby, w jakie można to zrobić. Spójrzmy na fragment kodu, aby wykonać te operacje. Aby zachować to proste, użyjemy tej samej matrycy dwa razy:

NP.Dodaj (matryca, macierz)

Następnie można odejmować dwie matryce:

NP.odejmować (matryca, macierz)

Wyjście powyższego polecenia w danej matrycy podano tutaj:

Zgodnie z oczekiwaniami, każdy z elementów w matrycy jest dodawany/odejmowany z odpowiednim elementem. Mnożenie macierzy jest podobne do znalezienia produktu DOT, tak jak wcześniej:

NP.DOT (Matrix, Matrix)

Powyższy kod znajdzie prawdziwą wartość mnożenia dwóch macierzy, podaną jako:

Matryca * Matryca

Wyjście powyższego polecenia w danej matrycy podano tutaj:

Wniosek

W tej lekcji przeszliśmy wiele operacji matematycznych związanych z wektorami, matrycami i tablicami, które są powszechnie używane przetwarzanie danych, statystyki opisowe i nauki danych. Była to szybka lekcja obejmująca tylko najczęstsze i najważniejsze sekcje szerokiej gamy koncepcji, ale operacje te powinny dać bardzo dobre wyobrażenie o tym, co można wykonać podczas radzenia sobie z tymi strukturami danych.

Podziel się swobodnie na temat lekcji na Twitterze z @Linuxhint i @SBMaggarwal (to ja!).