NumPy legkisebb négyzetek

Numpy Legkisebb Negyzetek



Ma megtanuljuk a lineáris egyenletek legkisebb négyzeteit, valamint azt, hogy hogyan lehet megvalósítani a legkisebb négyzetek módszerét a regressziós egyeneshez való legjobb illeszkedés érdekében a megadott adatkészletekben. De előtte szerezzük meg a NumPy alapvető ismereteit. A NumPy a Python egyik legjobb matematikai csomagja, amely többdimenziós tömbökhöz és mátrixokhoz nyújt szolgáltatásokat, valamint az ezeken a mátrixokon/tömbökön végrehajtható összetett numerikus műveletek széles skáláját.

A Python lstsq() egyik módszere arra szolgál, hogy megtaláljuk az ismert ax=b lineáris egyenletnek az ehhez az egyenlethez legjobban illeszkedő regressziós egyenesét. Ez azt jelenti, hogy meg kell határoznia azt a vonalat, amely megfelelően mutatja az x és y pontok közötti kapcsolatot, ha az adatok azt jelzik, hogy van ilyen. A két pont közötti egyenest regressziós egyenesnek nevezzük, amikor az ax=b egyenlet legkisebb négyzetének meghatározására szolgál.

Szintaxis:

Kezdjük el megtanulni a linalg.lstsq() függvény megvalósítási stílusát. Először megírjuk a Pythonban használt könyvtárnevet, amely „numpy”. Ezután összefűzzük a linalg() függvényt és az lstsq() függvényt. A linalg() függvény jelentése lineáris algebra. Mindig az lstsq() függvénnyel együtt használatos, mivel ez egy lineáris algebrai kifejezés. Ezt követően a függvény zárójelben lévő argumentumokat adjuk át.









Paraméterek:

Értsük meg a linalg.lstsq() függvény paramétereit:



pont 1: Ez az együttható mátrix.





2. pont: Ez a mátrix vagy tömb függő változókat tartalmaz.

rcond: Ennek adattípusa float. Az rcond arány a point_1 kisebb szinguláris értékeinek határértékeként szolgál. Ha egy szinguláris érték kisebb, mint a pont_1 legnagyobb szinguláris elemének rcond szorzata, akkor a rang meghatározásakor nullának tekintjük.



Visszatérési érték:

Cserébe az ax=b egyenletben az ismert x változó legkisebb négyzetét kapjuk.

1. példa:

Kezdjük el megvalósítani a Python könyvtár legkisebb négyzetes módszerének első példáját, a NumPy-t. Először is szükségünk van egy Python fordítóra, hogy kódolhassunk benne. Nyissa meg a fordítót. A NumPy könyvtárat is telepítenie kell, mert a NumPy egyik funkcióját használjuk, ami az lstsq() függvény. Ezután importálnia kell a NumPy csomagot. Először írja be az „import” kulcsszót, amely közli a fordítóval, hogy importálni fogjuk a csomagot. Ezután meg kell írnunk a „numpy” függvényben használt csomagnevet. Ezután írjuk a NumPy „np” alternatív nevét is, mert sok programozó használja ezt a megközelítést. Ez egy jó programozási megközelítés, és időt takarít meg.

A csomag importálása után elkezdjük írni a tényleges kódsort, amelyet meg akarunk tenni. Először az üzeneteket nyomtatjuk ki, hogy a felhasználó könnyen megértse, mit csinálunk a példában a print() utasítás segítségével. Az „A” egydimenziós tömböt az array() függvény segítségével hozzuk létre, majd a print() utasítás meghívásával kinyomtatjuk. Ezután létrehozunk egy másik egydimenziós „B” tömböt az array() függvény segítségével, és kinyomtatjuk a print() függvény segítségével.

import zsibbadt mint például.

nyomtatás ( 'A legkisebb négyzetes módszer megvalósítása a NumPy-ban: ' )

A = például. sor ( [ 1 , két , 1 , 1 , 1 , két , két , 1 , 1 ] )

nyomtatás ( ' \n Az A tömb a következő: , A )

B = például. sor ( [ 4 , 3 , 5 , 4 , két , 3 , 6 , 3 , két ] )

nyomtatás ( ' \n A B tömb a következő: , B )

x = például. lenmag . lstsq ( például. vstack ( [ A , például. azok ( csak ( A ) ) ] ) . T , B , rcond = Egyik sem ) [ 0 ]

nyomtatás ( ' \n A legkisebb tér: ' , x )

Az A és B pont létrehozása után megvalósítjuk az lstsq() függvényt. Először azonban a vstack() függvényt használjuk az „A” elemeinek egymásra halmozására, sorrendben. Ezután vesszük az „A” tömb transzponálását. Ezután a vstack() függvényt adjuk át az lstsq() függvény első argumentumaként. A második argumentum a „B” tömb, a harmadik pedig az „rcond”, amelyben az rcond értékét „none”-ra állítjuk. Ezután a teljes függvényt egy másik „x” nevű tömbben tároljuk, amely megmutatja, hogy ez az ismert változós lineáris egyenlet, ax=b. Ezt követően megjelenítjük az eredményeket, így ehhez a print() utasítást használjuk, és átadjuk benne az „x” tömböt.

2. példa:

Most kezdjük el megvalósítani a NumPy legkisebb négyzetek egy másik példáját. Először mindig azt a könyvtárat importáljuk, amelyet a programban használunk, ami a NumPy. Először az „import” kulcsszót írjuk be, hogy a csomagot megkapjuk a programban. Megírjuk a csomag nevét is, amely „numpy”, majd az álnevet, „np”. Ezután meghívjuk a print() metódust, hogy megjeleníthessük a legkisebb négyzetek újratölthető üzenetét a felhasználó jobb megértése érdekében.

Ezután létrehozzuk az „x_axis” tömbnevet, és az arange() függvény segítségével tároljuk benne a tömböt. Ezután a print() metódussal kinyomtatjuk. Ezután létrehozunk egy másik „y_axis” tömbnevet, és tároljuk benne azt a tömböt, amelyet az alábbi ábrán hoztunk létre.

Mindkét tömb létrehozása után megvalósítjuk az ones() metódust az x_tengely tömbön, és egy másik „tömb_a” nevű tömbben tároljuk. Aztán ki is nyomtatjuk ezt a tömböt. Létrehozunk egy másik „arg_reg_line” tömböt, és megvalósítunk rajta egy linalg.lstsq() függvényt. Ezután a paramétereket átadjuk ennek a függvénynek, hogy két tömb vagy pont között a legkisebb négyzeteket kapjuk. Az első paraméter az, hogy a tömb_a transzponálását vesszük. A második paraméter a második pont, amely az y_tengely. Ezután van „rcond”, amely a „none” értéket tartalmazza. Ezután a print() metódussal megjelenítjük a tömböt.

import zsibbadt mint például.

nyomtatás ( 'A linalg.lstsq() függvény megvalósítása: ' )

x_tengely = például. rendezés ( 0 , 10 )

nyomtatás ( ' \n Az x tengely értéke: ' , x_tengely )

y_tengely = [ 10.3 , 10.5 , tizenegy , 11.5 , 13.2 , 13.9 , 14 , 15.5 , 16.6 , 17 ]

nyomtatás ( ' \n Az y tengely értéke: ' , y_tengely )

tömb_a = például. sor ( [ x_tengely , például. azok ( 10 ) ] )

nyomtatás ( ' \n A tömb a következő: \n ' , tömb_a )

arg_reg_line = például. lenmag . lstsq ( tömb_a. T , y_tengely , rcond = Egyik sem ) [ 0 ]

nyomtatás ( ' \n A regressziós egyenes paraméterei a következők: , arg_reg_line )

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

import matplotlib. pyplot mint plt

plt. cselekmény ( x_tengely , reg_line , 'r-' )

plt. cselekmény ( x_tengely , y_tengely , 'O' )

plt. cím ( 'Lineáris regressziós egyenes' )

plt. xlabel ( 'X-tengely' )

plt. ylabel ( 'Y-tengely' )

plt. előadás ( )

Íme az előzőleg megvalósított példa kimenete:

Egy másik NumPy-csomagot importálunk, amely a „matplotlib” csomag, amelyet a grafikon ábrázolására használnak. Ezután ábrázoljuk az x_tengely értékeket és az y_tengely_értékeket. Ezután beállítjuk a grafikon címét és címkéit. Végül megjelenítjük a grafikont a show() metódussal.

Íme az adott példa kívánt grafikonja:

Következtetés

Ebben a cikkben megtudtuk, mi a legkisebb négyzet, és hogyan kapjuk meg az ismeretlen x változó linalg.lstsq() értékét az ax=b lineáris egyenlet segítségével. A NumPy több funkcióját használtuk a legkisebb négyzetek megtalálásához, és néhány példát implementáltunk részletes magyarázatokkal a felhasználó jobb megértése érdekében.