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:
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:
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:
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!).