NumPy najmenších štvorcov

Numpy Najmensich Stvorcov



Dnes sa dozvieme o najmenších štvorcoch v lineárnych rovniciach a o tom, ako implementovať metódu najmenších štvorcov pre čo najlepšie prispôsobenie regresnej čiare v poskytnutých súboroch údajov. Ale predtým získajme základné znalosti o NumPy. NumPy je jedným z najlepších matematických balíkov Pythonu, ktorý poskytuje služby pre viacrozmerné polia a matice spolu so širokou škálou zložitých numerických operácií, ktoré možno na týchto maticách/poliach vykonávať.

Jedna z metód Pythonu lstsq() sa používa na nájdenie regresnej priamky známej lineárnej rovnice ax=b, ktorá najlepšie vyhovuje tejto rovnici. To znamená, že musíte určiť čiaru, ktorá správne zobrazuje vzťah medzi bodmi x a y, ak vaše údaje naznačujú, že existuje. Čiara medzi oboma bodmi je známa ako regresná čiara, keď sa používa na nájdenie najmenšieho štvorca v tejto rovnici, ax=b.

Syntax:

Začnime sa učiť implementačný štýl funkcie linalg.lstsq(). Najprv napíšeme názov knižnice, ktorý používame v Pythone, ktorý je „numpy“. Potom zreťazíme funkciu linalg() a zreťazíme funkciu lstsq(). Funkcia linalg() znamená lineárnu algebru. Vždy sa používa s funkciou lstsq(), pretože ide o lineárny algebraický výraz. Potom odovzdáme argumenty v zátvorkách funkcií.









Parametre:

Poďme pochopiť parametre funkcie linalg.lstsq():



bod 1: Je to matica koeficientov.





bod 2: Táto matica alebo pole obsahuje závislé premenné.

rcond: Jeho dátový typ je float. Pomer rcond slúži ako medzná hodnota pre menšie singulárne hodnoty bodu 1. Ak je singulárna hodnota menšia ako druhý krát najväčší singulárny prvok bodu 1, pri určovaní poradia sa považuje za nulu.



Návratová hodnota:

Na oplátku dostaneme najmenší štvorec známej premennej x v rovnici ax=b.

Príklad 1:

Začnime implementovať náš prvý príklad metódy najmenších štvorcov knižnice Python, NumPy. Najprv potrebujeme kompilátor Pythonu, aby sme v ňom mohli kódovať. Otvorte kompilátor. Musíte tiež nainštalovať knižnicu NumPy, pretože používame jednu z funkcií NumPy, ktorou je funkcia lstsq(). Potom doň musíte importovať balík NumPy. Najprv napíšte kľúčové slovo „import“, ktoré povie kompilátoru, že ideme importovať balík. Potom musíme napísať názov balíka, ktorý používame vo funkcii „numpy“. A potom napíšeme aj alternatívny názov NumPy „np“, pretože tento prístup používa veľa programátorov. Toto je dobrý prístup k programovaniu a šetrí čas.

Po importovaní balíka začneme písať skutočný riadok kódu, ktorý chceme urobiť. Správy najskôr vytlačíme, aby používateľ pomocou príkazu print() ľahko pochopil, čo v príklade robíme. Jednorozmerné pole „A“ vytvoríme pomocou funkcie array() a potom ho vytlačíme volaním príkazu print(). Potom vytvoríme ďalšie jednorozmerné pole „B“ pomocou funkcie array() a vytlačíme ho pomocou funkcie print().

importovať numpy ako napr.

vytlačiť ( 'Implementácia metódy najmenších štvorcov v NumPy: ' )

A = napr. pole ( [ 1 , dva , 1 , 1 , 1 , dva , dva , 1 , 1 ] )

vytlačiť ( ' \n Pole A je: ' , A )

B = napr. pole ( [ 4 , 3 , 5 , 4 , dva , 3 , 6 , 3 , dva ] )

vytlačiť ( ' \n Pole B je: ' , B )

X = napr. ľanové semienko . lstsq ( napr. vstack ( [ A , napr. tie ( len ( A ) ) ] ) . T , B , rcond = žiadne ) [ 0 ]

vytlačiť ( ' \n Najmenší štvorec je: ' , X )

Po vytvorení oboch bodov A aj B implementujeme funkciu lstsq(). Najprv však použijeme funkciu vstack() na nahromadenie prvkov „A“, sekvenčne. Potom vykonáme transpozíciu poľa „A“. Potom odovzdáme funkciu vstack() ako prvý argument funkcie lstsq(). Druhý argument je pole „B“ a tretí argument je „rcond“, v ktorom nastavíme hodnotu rcond ako „none“. Potom celú funkciu uložíme do iného poľa s názvom „x“, čo ukazuje, že ide o známu premennú lineárnu rovnicu ax=b. Potom zobrazíme výsledky, takže na to použijeme príkaz print() a vložíme do neho pole „x“.

Príklad 2:

Teraz začnime implementovať ďalší príklad najmenších štvorcov NumPy. Vždy najprv importujeme knižnicu, ktorú používame v programe NumPy. Najprv napíšeme kľúčové slovo „import“, aby sme balík dostali do programu. Napíšeme aj názov balíka, ktorý je „numpy“ a potom jeho alias „np“. Potom zavoláme metódu print(), aby sme mohli zobraziť správu o najmenších štvorcoch pre lepšie pochopenie používateľa.

Potom vytvoríme názov poľa „x_axis“ a uložíme doň pole pomocou funkcie arange(). Potom ho vytlačíme pomocou metódy print(). Potom vytvoríme ďalší názov poľa „y_axis“ a uložíme doň pole, ktoré sme vytvorili na nasledujúcom obrázku.

Po vytvorení oboch polí implementujeme metódu ones() do poľa x_axis a uložíme ju do iného poľa s názvom „pole_a“. A potom tiež vytlačíme toto pole. Vytvoríme ďalšie pole s názvom „arg_reg_line“ a implementujeme doň funkciu linalg.lstsq(). Potom tejto funkcii odovzdáme parametre, aby sme dostali najmenší štvorec medzi dvoma poliami alebo bodmi. Prvým parametrom je, že vykonáme transpozíciu poľa_a. Druhým parametrom je druhý bod, ktorým je os y. Potom máme „rcond“, ktorý obsahuje hodnotu „none“. Pole potom zobrazíme pomocou metódy print().

importovať numpy ako napr.

vytlačiť ( 'Implementácia funkcie linalg.lstsq(): ' )

os x = napr. zariadiť ( 0 , 10 )

vytlačiť ( ' \n Hodnota osi x je: ' , os x )

os y = [ 10.3 , 10.5 , jedenásť , 11.5 , 13.2 , 13.9 , 14 , 15.5 , 16.6 , 17 ]

vytlačiť ( ' \n Hodnota osi y je: ' , os y )

pole_a = napr. pole ( [ os x , napr. tie ( 10 ) ] )

vytlačiť ( ' \n Pole je: \n ' , pole_a )

arg_reg_line = napr. ľanové semienko . lstsq ( pole_a. T , os y , rcond = žiadne ) [ 0 ]

vytlačiť ( ' \n Parametre regresnej čiary sú: ' , arg_reg_line )

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

importovať matplotlib. pyplot ako plt

plt. zápletka ( os x , riadok reg_line , 'r-' )

plt. zápletka ( os x , os y , 'O' )

plt. titul ( 'Lineárna regresná čiara' )

plt. xlabel ( 'os X' )

plt. ylabel ( 'os Y' )

plt. šou ( )

Tu je výstup z predtým implementovaného príkladu:

Importujeme ďalší balík NumPy, ktorým je balík „matplotlib“, ktorý sa používa na vykreslenie grafu. Potom vykreslíme hodnoty osi x a hodnoty osi y. Ďalej nastavíme názov a štítky grafu. Nakoniec graf zobrazíme pomocou metódy show().

Tu je požadovaný graf daného príkladu:

Záver

V tomto článku sme sa dozvedeli, čo je najmenší štvorec a ako získame linalg.lstsq() neznámej premennej x pomocou lineárnej rovnice ax=b. Použili sme viacero funkcií NumPy na nájdenie najmenších štvorcov a implementovali sme niekoľko príkladov s podrobným vysvetlením pre lepšie pochopenie používateľa.