NumPy En Küçük Kareler

Numpy En Kucuk Kareler



Bugün, doğrusal denklemlerdeki en küçük kareler ve sağlanan veri kümelerinde regresyon doğrusuna en uygun en küçük kareler yönteminin nasıl uygulanacağını öğreneceğiz. Ama ondan önce, NumPy'nin temel bilgilerini öğrenelim. NumPy, çok boyutlu diziler ve matrisler ile bu matrisler/diziler üzerinde gerçekleştirilebilecek çok çeşitli karmaşık sayısal işlemler için hizmetler sağlayan en iyi Python matematiksel paketlerinden biridir.

Python lstsq() yöntemlerinden biri, bu denkleme en iyi uyan bilinen ax=b doğrusal denkleminin regresyon çizgisini bulmak için kullanılır. Bu, verileriniz bir tane olduğunu gösteriyorsa, x ve y noktaları arasındaki ilişkiyi doğru şekilde gösteren doğruyu belirlemeniz gerektiği anlamına gelir. Her iki nokta arasındaki doğru, ax=b denkleminden en küçük kareyi bulmak için kullanıldığında regresyon doğrusu olarak bilinir.

Sözdizimi:

linalg.lstsq() işlevinin uygulama stilini öğrenmeye başlayalım. İlk olarak Python'da kullandığımız kütüphane adını “numpy” olarak yazıyoruz. Ardından linalg() fonksiyonunu ve lstsq() fonksiyonunu birleştiriyoruz. linalg() işlevi doğrusal cebir anlamına gelir. Doğrusal bir cebirsel ifade olduğu için her zaman lstsq() işleviyle birlikte kullanılır. Bundan sonra, argümanları fonksiyon parantezlerine iletiyoruz.









parametreler:

linalg.lstsq() fonksiyonunun parametrelerini anlayalım:



1. Nokta: Katsayı matrisidir.





nokta2: Bu matris veya dizi bağımlı değişkenler içerir.

rcond: Bunun veri türü float'tır. rcond oranı, point_1'in daha küçük tekil değerleri için bir kesme işlevi görür. Tekil bir değer, point_1'in en büyük tekil elemanının rcond katından küçükse, rank belirlenirken sıfır olarak kabul edilir.



Geri dönüş değeri:

Karşılığında, ax=b denklemindeki bilinen x değişkeninin en küçük karesini elde ederiz.

Örnek 1:

Python kitaplığının en küçük kareler yöntemine ilişkin ilk örneğimizi uygulamaya başlayalım, NumPy. İlk olarak, içinde kod yazabilmemiz için bir Python derleyicisine ihtiyacımız var. Derleyiciyi açın. NumPy'nin lstsq() işlevi olan işlevlerinden birini kullandığımız için NumPy kitaplığını da yüklemeniz gerekir. Ardından, içindeki NumPy paketini içe aktarmanız gerekir. İlk olarak, derleyiciye paketi içe aktaracağımızı söyleyen “import” anahtar sözcüğünü yazın. Daha sonra fonksiyonda kullandığımız paket ismini “numpy” olarak yazmamız gerekiyor. Ardından, birçok programcı bu yaklaşımı kullandığı için NumPy “np”nin alternatif adını da yazarız. Bu iyi bir programlama yaklaşımıdır ve zaman kazandırır.

Paketi import ettikten sonra asıl yapmak istediğimiz kod satırını yazmaya başlıyoruz. Kullanıcının print() deyimini kullanarak örnekte ne yaptığımızı kolayca anlayabilmesi için önce mesajları yazdırıyoruz. array() fonksiyonunu kullanarak tek boyutlu “A” dizisini oluşturuyoruz ve ardından print() deyimini çağırarak bunu yazdırıyoruz. Ardından array() fonksiyonunu kullanarak başka bir tek boyutlu “B” dizisi oluşturuyoruz ve print() fonksiyonunu kullanarak bunu yazdırıyoruz.

içe aktarmak dizi olarak Örneğin.

Yazdır ( 'NumPy'de En Küçük Kareler Yönteminin Uygulanması: ' )

A = Örneğin. dizi ( [ 1 , iki , 1 , 1 , 1 , iki , iki , 1 , 1 ] )

Yazdır ( ' \n Dizi A: ' , A )

B = Örneğin. dizi ( [ 4 , 3 , 5 , 4 , iki , 3 , 6 , 3 , iki ] )

Yazdır ( ' \n Dizi B: ' , B )

X = Örneğin. keten tohumu . lstsq ( Örneğin. vs yığını ( [ A , Örneğin. olanlar ( sadece ( A ) ) ] ) . T , B , rcond = Hiçbiri ) [ 0 ]

Yazdır ( ' \n En Küçük Kare: ' , X )

Hem A hem de B noktaları oluşturulduktan sonra lstsq() işlevini uygularız. Ama önce, 'A'nın öğelerini sıra bazında istiflemek için vstack() işlevini kullanırız. Ardından, “A” dizisinin devriğini alıyoruz. Ardından, lstsq() işlevinin ilk argümanı olarak vstack() işlevini iletiyoruz. İkinci argüman “B” dizisidir ve üçüncü argüman, rcond değerini “yok” olarak ayarladığımız “rcond” dir. Daha sonra, tüm fonksiyonu, bilinen değişken lineer denklem olan ax=b olduğunu gösteren “x” adlı başka bir dizide saklarız. Bundan sonra sonuçları görüntülüyoruz, bunun için print() deyimini kullanıyoruz ve içine “x” dizisini geçiyoruz.

Örnek 2:

Şimdi, başka bir NumPy en küçük kareler örneğini uygulamaya başlayalım. NumPy olan programda kullandığımız kütüphaneyi her zaman önce içe aktarırız. İlk önce paketi programa almak için “import” anahtar kelimesini yazıyoruz. Ayrıca 'numpy' olan paket adını ve ardından takma adını 'np' yazıyoruz. Ardından, kullanıcının daha iyi anlaşılması için en küçük karelerin yeniden çizilebilir mesajını görüntüleyebilmemiz için print() yöntemini çağırırız.

Daha sonra “x_axis” dizi adını oluşturuyoruz ve arange() fonksiyonunu kullanarak diziyi bunun içinde saklıyoruz. Daha sonra print() metodu ile print ediyoruz. Daha sonra “y_axis” adlı başka bir dizi adı oluşturuyoruz ve aşağıdaki çizimde oluşturduğumuz diziyi içine kaydediyoruz.

Her iki diziyi de oluşturduktan sonra x_axis dizisine one() yöntemini uygularız ve onu “array_a” adlı başka bir dizide saklarız. Ve sonra bu diziyi de yazdırıyoruz. “arg_reg_line” adında başka bir dizi oluşturuyoruz ve bunun üzerine linalg.lstsq() fonksiyonunu uyguluyoruz. Ardından, iki dizi veya nokta arasındaki en küçük kareleri alabilmemiz için parametreleri bu fonksiyona geçiriyoruz. İlk parametre, array_a'nın devriğini almamızdır. İkinci parametre, y_ ekseni olan ikinci noktadır. Ardından, “none” değerini içeren “rcond” var. Ardından print() yöntemini kullanarak diziyi görüntüleriz.

içe aktarmak dizi olarak Örneğin.

Yazdır ( 'linalg.lstsq() işlevinin uygulanması: ' )

x_axis = Örneğin. portakal ( 0 , 10 )

Yazdır ( ' \n x ekseninin değeri: ' , x_axis )

y_axis = [ 10.3 , 10.5 , on bir , 11.5 , 13.2 , 13.9 , 14 , 15.5 , 16.6 , 17 ]

Yazdır ( ' \n y ekseninin değeri: ' , y_axis )

dizi_a = Örneğin. dizi ( [ x_axis , Örneğin. olanlar ( 10 ) ] )

Yazdır ( ' \n Dizi: \n ' , dizi_a )

arg_reg_line = Örneğin. keten tohumu . lstsq ( dizi_a. T , y_axis , rcond = Hiçbiri ) [ 0 ]

Yazdır ( ' \n Regrssion Line Parametreleri: ' , arg_reg_line )

reg_line = arg_reg_line [ 0 ] * x_axis + arg_reg_line [ 1 ]

içe aktarmak matplotlib. pyplot olarak plt

plt. komplo ( x_axis , reg_line , 'r-' )

plt. komplo ( x_axis , y_axis , 'Ö' )

plt. Başlık ( 'Doğrusal Regresyon Çizgisi' )

plt. x etiketi ( 'X Ekseni' )

plt. ylabel ( 'Y ekseni' )

plt. göstermek ( )

İşte önceden uygulanmış örneğin çıktısı:

Grafiği çizmek için kullanılan “matplotlib” paketi olan başka bir NumPy paketini içe aktarıyoruz. Ardından, x_axis değerlerini ve y_axis_values ​​değerlerini çiziyoruz. Ardından, grafiğin başlığını ve etiketlerini belirledik. Son olarak show() metodunu kullanarak grafiği gösteriyoruz.

İşte verilen örneğin istenen grafiği:

Çözüm

Bu makalede, en küçük karenin ne olduğunu ve ax=b doğrusal denklemini kullanarak bilinmeyen x değişkeninin linalg.lstsq() değerini nasıl elde edeceğimizi öğrendik. En küçük kareleri bulmak için NumPy'nin çoklu işlevlerini kullandık ve kullanıcının daha iyi anlaşılması için ayrıntılı açıklamalarla bazı örnekler uyguladık.