"Enter"a basıp içeriğe geçin

NumPy Kullanan Vektörler, Diziler ve Matrisler – Linux Önerileri

Bu öğreticide, NumPy kitaplığını kullanarak Python’da vektörler, diziler ve matrislerle oynamak için bazı güzel ipuçlarına ve püf noktalarına bakacağız. Veri bilimine yeni başlıyorsanız ve biraz ihtiyacınız varsa, bu kurs çok iyi bir başlangıç ​​noktasıdır. Bu bileşenlere giriş niteliğinde bir matematiksel genel bakış ve içlerinde NumPy kullanarak onlarla nasıl oynayabileceğimizin kodu.

NumPy kitaplığı, vektörler, matrisler ve matrisler gibi makine öğrenimi ve veri biliminde sıklıkla kullanılan veri yapılarında gerçekleştirilmesi gereken işlemlerin çoğunu gerçekleştirmemize olanak tanır. Birçok makine öğrenimi işlem hattında kullanılan NumPy ile yalnızca en yaygın işlemleri göstereceğiz. Son olarak, lütfen NumPy’nin bir işlem gerçekleştirme yöntemi olduğunu unutmayın, bu nedenle gösterdiğimiz aritmetik işlemler bu dersin ana odak noktasıdır, . NumPy paketi kendisi. Hadi başlayalım.

vektör nedir?

Google’a göre vektör, özellikle uzayda bir noktanın diğerine göre konumunu belirleyen, yönü ve büyüklüğü olan bir niceliktir.

Vektörler, yalnızca özelliklerin boyutunu değil aynı zamanda yönelimlerini de tanımladıkları için makine öğreniminde çok önemlidir. Aşağıdaki parçacığı kullanarak NumPy’de bir vektör oluşturabiliriz:

numpy’yi ice hareket yan np
row_vector = np.dizi([1,2,3])
matbaa(düz vektörler)

Yukarıdaki pasajda bir sınıf vektörü oluşturduk. Bunun gibi bir sütun vektörü de oluşturabiliriz:

numpy’yi ice hareket yan np
col_vector = np.dizi([[1]Ve[2]Ve[3]])
matbaa(kol_vektörü)

matris yapımı

Bir dizi basitçe iki boyutlu bir dizi olarak anlaşılabilir. Çok boyutlu bir dizi oluşturarak NumPy ile bir dizi oluşturabiliriz:

dizi = np.dizi([[1, 2, 3]Ve [4, 5, 6]Ve [7, 8, 9]])
matbaa(matris)

Matris tam olarak çok boyutlu bir dizi gibi görünse de, Matris veri yapısı önerilmez İki nedenden dolayı:

  1. Dizi, NumPy paketi söz konusu olduğunda standarttır
  2. NumPy kullanan çoğu işlem dizileri değil dizileri döndürür

seyrek matris kullanarak

Bir seyrek dizi, öğelerin çoğunun sıfır olduğu bir dizidir. Şimdi, veri işleme ve makine öğrenimindeki yaygın bir senaryo, öğelerin çoğunun sıfır olduğu dizileri oluşturmaktır. Örneğin, satırları her bir YouTube videosunu tanımlayan ve sütunları her kayıtlı kullanıcıyı temsil eden bir dizi düşünün. Her değer, kullanıcının bir video izleyip izlemediğini gösterir. Elbette bu dizideki değerlerin çoğu sıfır olacaktır. NS Seyrek matrisli özellik Sıfıra eşit değerler saklamayın. Bu, büyük bir hesaplama avantajı ve depolama optimizasyonu ile sonuçlanır.

Burada bir kıvılcım matrisi oluşturalım:

Scipy ithalatı seyrek
original_matrix = np.dizi([[1, 0, 3]Ve [0, 0, 6]Ve [7, 0, 0]])
seyrek_matrix = seyrek.csr_matrix(orijinal_matriks)
matbaa(seyrek matris)

Kodun nasıl çalıştığını anlamak için buradaki çıktıya bakacağız:

Yukarıdaki kodda, NumPy işlevini kullanarak Sıkıştırılmış seyrek satır Sıfır olmayan öğelerin sıfır dizinlerle temsil edildiği bir dizi. Birkaç seyrek dizi türü vardır, örneğin:

  • Sıkıştırılmış seyrek sütun
  • menü listesi
  • ana sözlük

Burada diğer seyrek dizilere girmeyeceğiz, ancak her birinin özel bir kullanımı olduğunu ve kimsenin “en iyi” olarak adlandırılamayacağını biliyoruz.

İşlemleri tüm vektör öğelerine uygula

Birden çok vektör öğesine ortak bir işlem uygulamamız gerektiğinde bu yaygın bir senaryodur. Bu, bir lambda belirleyerek ve ardından onu yönlendirerek yapılabilir. Bunun için bazı kod parçacıklarını görelim:

dizi = np.dizi([
[1, 2, 3]Ve
[4, 5, 6]Ve
[7, 8, 9]])
mul_5 = lambda x:x *5
vectorized_mul_5 = np. vektörleştir(AVM_5)
vektörleştirilmiş_mul_5(matris)

Kodun nasıl çalıştığını anlamak için buradaki çıktıya bakacağız:

Yukarıdaki kod parçacığında, NumPy kitaplığının bir parçası olan vectorize işlevini kullandık. Basit bir lambda tanımını, sistem vektörünün her bir öğesini işleyebilen bir işleve dönüştürme. Vectorize olduğuna dikkat etmek önemlidir Sadece öğelerin üzerinde dön Program performansı üzerinde herhangi bir etkisi yoktur. NumPy ayrıca bir uzantıya izin verir yayınböylece yukarıdaki karmaşık kod yerine basitçe şunları yapabiliriz:

Ve sonuç tamamen aynı olacak. Önce karmaşık kısmı göstermek istedim, yoksa bu kısmı atlardım!

Ortalama, varyans ve standart sapma

NumPy ile vektörler üzerinde tanımlayıcı istatistikler yapmak kolaydır. Ortalama vektör aşağıdaki gibi hesaplanabilir:

Vektör varyansı şu şekilde hesaplanabilir:

Bir vektörün standart sapması şu şekilde hesaplanabilir:

Eşlenen dizideki yukarıdaki komutların çıktısı şöyledir:

Matris dönüşümü

Ofset, dizilerle çevrili olduğunuzda duyacağınız çok yaygın bir işlemdir. Ofset, bir dizideki satır ve sütun değerlerini değiştirmenin bir yoludur. Lütfen bir Vektör taşınamaz Bir vektör olarak bu değerler satır ve sütunlara ayrılmamış değerler kümesidir. Lütfen bir satır vektörünü bir sütun vektörüne dönüştürmenin bir yer değiştirme olmadığını unutmayın (doğrusal cebirin bu kursun kapsamı dışında kalan tanımlarına dayalı olarak).

Şimdilik, sadece matrisimizi değiştirerek huzuru bulacağız. NumPy ile matris aktarımına ulaşmak çok basittir:

Belirtilen dizideki yukarıdaki komutun çıktısı şöyledir:

Aynı işlem bir satır vektörünü bir sütun vektörüne dönüştürmek için de yapılabilir.

matris düzleştirme

Öğelerini doğrusal bir şekilde değiştirmek istiyorsak, bir diziyi tek boyutlu bir diziye dönüştürebiliriz. Bu, aşağıdaki kod parçacığı kullanılarak yapılabilir:

Belirtilen dizideki yukarıdaki komutun çıktısı şöyledir:

Düz bir matrisin tek boyutlu bir matris olduğunu, sadece doğrusal olduğunu unutmayın.

Özdeğerlerin ve özvektörlerin hesaplanması

Özvektörler, makine öğrenimi paketlerinde yaygın olarak kullanılır. Bu nedenle, doğrusal dönüşüm işlevi bir X matrisi olarak sunulduğunda, özvektörler, vektörün yalnızca ölçeğini değiştiren ancak yönünü değiştirmeyen vektörlerdir. Söyleyebiliriz:

Burada X, özdeğerleri içeren kare matristir. Ayrıca v, özvektörleri içerir. NumPy ile özdeğerleri ve özvektörleri hesaplamak kolaydır. Bu, kodun aynı şeyi gösterdiğimiz kısmıdır:

değerler, katlar = np.linalg.eig(matris)

Belirtilen dizideki yukarıdaki komutun çıktısı şöyledir:

Vektörlerden raster ürünler

Vektör nokta çarpımı, iki vektörü çarpma yöntemidir. Sana anlatırım Aynı yönde kaç tane vektör var?Size tersini söyleyen, çapraz çarpımın aksine, aynı yönde olan (ortogonal olarak adlandırılan) vektörlerin sayısıdır. Burada kod parçacığında verilen iki vektörün iç çarpımını hesaplayabiliriz:

a = np.dizi([3, 5, 6])
b = np.dizi([23, 15, 1])
Puan(Kemik)

Belirtilen dizilerde yukarıdaki komutun çıktısı şöyledir:

Matrislerde toplama, çıkarma ve çarpma

Birden çok dizi dizisi eklemek ve çıkarmak oldukça basit bir işlemdir. Bunu yapmanın iki yolu var. Bu işlemleri gerçekleştirmek için kod parçacığına bakalım. Bunu basitleştirmek için aynı diziyi iki kez kullanacağız:

Daha sonra, iki matris aşağıdaki gibi çıkarılabilir:

np. Çıkart(annenin annesi)

Belirtilen dizideki yukarıdaki komutun çıktısı şöyledir:

Beklendiği gibi, dizideki her öğe, karşılık gelen öğeyle birlikte eklenir/çıkarılır. Matris çarpımı, daha önce yaptığımız gibi iç çarpımı bulmaya benzer:

Yukarıdaki kod, iki dizinin gerçek çarpım değerini aşağıdaki gibi bulacaktır:

Belirtilen dizideki yukarıdaki komutun çıktısı şöyledir:

çözüm

Bu derste, veri işleme, tanımlayıcı istatistik ve veri biliminde yaygın olarak kullanılan vektörler, matrisler ve matrislerle ilgili birçok aritmetik işlemi inceledik. Bu, çok çeşitli kavramların yalnızca en yaygın ve önemli kısımlarını kapsayan hızlı bir dersti, ancak bunlar, işlemlerle, bu veri yapılarıyla uğraşırken tüm işlemlerin neler yapabileceğine dair çok iyi bir fikir vermeli.

Lütfen kursla ilgili görüşlerinizi Twitter’da özgürce paylaşın. @çalışan e @çalışan (Bu benim!).

Diğer gönderilerimize göz at

[wpcin-random-posts]

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir