Python: Vektor, Matriks, dan Array dengan NumPy

Python Vectors Matrices



Dalam pelajaran ini, kita akan melihat beberapa tip dan trik untuk bermain dengan vektor, matriks, dan array menggunakan pustaka NumPy dengan Python. Pelajaran ini adalah titik awal yang sangat baik jika Anda memulai Ilmu Data dan memerlukan beberapa gambaran matematis pengantar dari komponen-komponen ini dan bagaimana kita dapat memainkannya menggunakan NumPy dalam kode.

Pustaka NumPy memungkinkan kita untuk melakukan berbagai operasi yang perlu dilakukan pada struktur data yang sering digunakan dalam Pembelajaran Mesin dan Ilmu Data seperti vektor, matriks, dan array. Kami hanya akan menampilkan operasi paling umum dengan NumPy yang digunakan di banyak pipeline Machine Learning. Terakhir, harap dicatat bahwa NumPy hanyalah cara untuk melakukan operasi, jadi, operasi matematika yang kami tunjukkan adalah fokus utama dari pelajaran ini dan bukan paket NumPy itu sendiri. Mari kita mulai.







Apa itu Vektor?

Menurut Google, Vektor adalah besaran yang memiliki arah dan juga besaran, terutama dalam menentukan posisi suatu titik dalam ruang relatif terhadap titik lainnya.





Vektor sangat penting dalam Machine Learning karena tidak hanya menggambarkan besarnya tetapi juga arah fitur. Kita dapat membuat vektor di NumPy dengan potongan kode berikut:





impor numpysebagaimisalnya

row_vector = np.array([1,2,3])
mencetak(baris_vektor)

Dalam cuplikan kode di atas, kami membuat vektor baris. Kita juga dapat membuat vektor kolom sebagai:

impor numpysebagaimisalnya

col_vector = np.array([[1],[2],[3]])
mencetak(col_vektor)

Membuat Matriks

Sebuah matriks dapat secara sederhana dipahami sebagai array dua dimensi. Kita dapat membuat matriks dengan NumPy dengan membuat array multidimensi:



matriks = np.array([[1,2,3],[4,5,6],[7,8,9]])
mencetak(matriks)

Meskipun matriks sangat mirip dengan array multidimensi, struktur data matriks tidak disarankan karena dua alasan:

  1. Array adalah standar dalam hal paket NumPy
  2. Sebagian besar operasi dengan NumPy mengembalikan array dan bukan matriks

Menggunakan Matriks Jarang

Untuk mengingatkan, matriks jarang adalah matriks yang sebagian besar itemnya adalah nol. Sekarang, skenario umum dalam pemrosesan data dan pembelajaran mesin adalah pemrosesan matriks di mana sebagian besar elemen adalah nol. Misalnya, pertimbangkan matriks yang barisnya menggambarkan setiap video di Youtube dan kolom mewakili setiap pengguna terdaftar. Setiap nilai menunjukkan apakah pengguna telah menonton video atau tidak. Tentu saja, sebagian besar nilai dalam matriks ini akan menjadi nol. NS keuntungan dengan matriks jarang adalah bahwa itu tidak menyimpan nilai-nilai yang nol. Ini menghasilkan keuntungan komputasi yang sangat besar dan pengoptimalan penyimpanan juga.

Mari kita buat matriks percikan di sini:

dari scipy impor jarang

matriks_asli = np.array([[1,0,3],[0,0,6],[7,0,0]])
sparse_matrix = sparse.csr_matrix(asli_matriks)
mencetak(matriks_jarang)

Untuk memahami cara kerja kode, kita akan melihat output di sini:

Dalam kode di atas, kami menggunakan fungsi NumPy untuk membuat Baris jarang terkompresi matriks di mana elemen bukan nol diwakili menggunakan indeks berbasis nol. Ada berbagai macam matriks sparse, seperti:

  • Kolom jarang terkompresi
  • Daftar daftar
  • kamus kunci

Kami tidak akan membahas matriks jarang lainnya di sini, tetapi ketahuilah bahwa masing-masing penggunaannya adalah spesifik dan tidak ada yang bisa disebut sebagai 'terbaik'.

Menerapkan Operasi ke semua elemen Vektor

Ini adalah skenario umum ketika kita perlu menerapkan operasi umum ke beberapa elemen vektor. Ini dapat dilakukan dengan mendefinisikan lambda dan kemudian membuat vektor yang sama. Mari kita lihat beberapa cuplikan kode untuk hal yang sama:

matriks = np.array([
[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(matriks)

Untuk memahami cara kerja kode, kita akan melihat output di sini:

Dalam cuplikan kode di atas, kami menggunakan fungsi vectorize yang merupakan bagian dari library NumPy, untuk mengubah definisi lambda sederhana menjadi fungsi yang dapat memproses setiap elemen vektor. Penting untuk dicatat bahwa vektorisasi adalah hanya loop di atas elemen dan itu tidak berpengaruh pada kinerja program. NumPy juga memungkinkan penyiaran , yang berarti bahwa alih-alih kode kompleks di atas, kita bisa saja melakukan:

matriks* 5

Dan hasilnya akan persis sama. Saya ingin menunjukkan bagian yang kompleks terlebih dahulu, jika tidak, Anda akan melewatkan bagian itu!

Rata-rata, Varians dan Standar Deviasi

Dengan NumPy, mudah untuk melakukan operasi yang berkaitan dengan statistik deskriptif pada vektor. Mean dari sebuah vektor dapat dihitung sebagai:

np.mean(matriks)

Varians dari sebuah vektor dapat dihitung sebagai:

np.var(matriks)

Standar deviasi dari sebuah vektor dapat dihitung sebagai:

misalnya std(matriks)

Output dari perintah di atas pada matriks yang diberikan diberikan di sini:

Transposisi Matriks

Transposing adalah operasi yang sangat umum yang akan Anda dengar setiap kali Anda dikelilingi oleh matriks. Transposing hanyalah cara untuk menukar nilai kolom dan baris dari sebuah matriks. Harap dicatat bahwa vektor tidak dapat ditransposisikan sebagai vektor hanyalah kumpulan nilai tanpa nilai-nilai tersebut dikategorikan ke dalam baris dan kolom. Harap dicatat bahwa mengonversi vektor baris ke vektor kolom bukanlah transposisi (berdasarkan definisi aljabar linier, yang berada di luar cakupan pelajaran ini).

Untuk saat ini, kita akan menemukan kedamaian hanya dengan mentranspos matriks. Sangat mudah untuk mengakses transpos matriks dengan NumPy:

matriks.T

Output dari perintah di atas pada matriks yang diberikan diberikan di sini:

Operasi yang sama dapat dilakukan pada vektor baris untuk mengubahnya menjadi vektor kolom.

Meratakan Matriks

Kita dapat mengubah matriks menjadi array satu dimensi jika kita ingin memproses elemen-elemennya secara linier. Ini dapat dilakukan dengan cuplikan kode berikut:

matrix.flatten()

Output dari perintah di atas pada matriks yang diberikan diberikan di sini:

Perhatikan bahwa matriks rata adalah array satu dimensi, hanya linier dalam mode.

Menghitung Nilai Eigen dan Vektor Eigen

Vektor Eigen sangat umum digunakan dalam paket Machine Learning. Jadi, ketika fungsi transformasi linier disajikan sebagai matriks, maka X, vektor Eigen adalah vektor yang hanya berubah dalam skala vektor tetapi tidak arahnya. Kita dapat mengatakan bahwa:

Xv = v

Di sini, X adalah matriks persegi dan berisi nilai Eigen. Juga, v berisi vektor Eigen. Dengan NumPy, mudah untuk menghitung nilai Eigen dan vektor Eigen. Berikut adalah cuplikan kode tempat kami mendemonstrasikan hal yang sama:

nilai, vektor = np.linalg.eig(matriks)

Output dari perintah di atas pada matriks yang diberikan diberikan di sini:

Produk Titik dari Vektor

Dot Products of Vectors adalah cara mengalikan 2 vektor. Ini memberitahu Anda tentang berapa banyak vektor yang searah? , sebagai lawan dari perkalian silang yang menyatakan sebaliknya, betapa kecilnya vektor-vektor tersebut dalam arah yang sama (disebut ortogonal). Kita dapat menghitung produk titik dari dua vektor seperti yang diberikan dalam potongan kode di sini:

a = np.array([3,5,6])
b = np.array([2. 3,limabelas,1])

np.dot(a, b)

Output dari perintah di atas pada array yang diberikan diberikan di sini:

Penjumlahan, Pengurangan, dan Perkalian Matriks

Menambah dan Mengurangi beberapa matriks adalah operasi yang cukup mudah dalam matriks. Ada dua cara yang bisa dilakukan. Mari kita lihat cuplikan kode untuk melakukan operasi ini. Untuk tujuan menjaga ini tetap sederhana, kami akan menggunakan matriks yang sama dua kali:

np.tambahkan(matriks, matriks)

Selanjutnya, dua matriks dapat dikurangkan sebagai:

np.kurangi(matriks, matriks)

Output dari perintah di atas pada matriks yang diberikan diberikan di sini:

Seperti yang diharapkan, setiap elemen dalam matriks ditambahkan/dikurangi dengan elemen yang sesuai. Mengalikan matriks mirip dengan menemukan produk titik seperti yang kita lakukan sebelumnya:

np.dot(matriks, matriks)

Kode di atas akan menemukan nilai perkalian sebenarnya dari dua matriks, diberikan sebagai:

matriks*matriks

Output dari perintah di atas pada matriks yang diberikan diberikan di sini:

Kesimpulan

Dalam pelajaran ini, kita telah melalui banyak operasi matematika yang berhubungan dengan Vektor, Matriks dan Array yang umum digunakan Pengolahan data, statistik deskriptif dan ilmu data. Ini adalah pelajaran singkat yang hanya mencakup bagian yang paling umum dan paling penting dari berbagai macam konsep tetapi operasi ini harus memberikan ide yang sangat baik tentang apa yang semua operasi dapat dilakukan saat berurusan dengan struktur data ini.

Silakan bagikan umpan balik Anda secara bebas tentang pelajaran di Twitter dengan @linuxhint dan @sbmaggarwal (itu aku!).