NumPy Least Squares

Numpy Least Squares



Ngayon, matututuhan natin ang tungkol sa pinakamaliit na mga parisukat sa mga linear na equation at kung paano ipatupad ang pinakamababang parisukat na pamamaraan para sa pinakaangkop para sa linya ng regression sa mga ibinigay na dataset. Ngunit bago iyon, kunin natin ang pangunahing kaalaman sa NumPy. Ang NumPy ay isa sa mga pinakamahusay na mathematical package ng Python na nagbibigay ng mga serbisyo para sa mga multi-dimensional na array at matrice kasama ng malawak na hanay ng mga kumplikadong numerical operation na maaaring gawin sa mga matrice/array na ito.

Ang isa sa mga pamamaraan ng Python lstsq() ay ginagamit upang mahanap ang regression line ng kilalang linear equation ax=b na pinakaangkop sa equation na ito. Nangangahulugan ito na kailangan mong tukuyin ang linya na maayos na nagpapakita ng kaugnayan sa pagitan ng mga x at y na puntos kung ang iyong data ay nagpapahiwatig na mayroong isa. Ang linya sa pagitan ng parehong mga punto ay kilala bilang isang regression line kapag ito ay ginamit upang mahanap ang pinakamaliit na parisukat sa pamamagitan ng equation na ito, ax=b.

Syntax:

Simulan natin ang pag-aaral ng istilo ng pagpapatupad ng function na linalg.lstsq(). Una, isinusulat namin ang pangalan ng library na ginagamit namin sa Python na 'numpy'. Pagkatapos, pinagsasama namin ang function na linalg() at pinagsasama ang function na lstsq(). Ang linalg() function ay nangangahulugang linear algebra. Ito ay palaging ginagamit sa lstsq() function dahil ito ay isang linear algebraic expression. Pagkatapos nito, ipinapasa namin ang mga argumento sa mga bracket ng function.









Mga Parameter:

Unawain natin ang mga parameter ng linalg.lstsq() function:



punto 1: Ito ang coefficient matrix.





punto 2: Ang matrix o array na ito ay naglalaman ng mga dependent variable.

rcond: Ang datatype nito ay float. Ang rcond ratio ay nagsisilbing cut-off para sa mas maliliit na singular na value ng point_1. Kung ang isang singular na halaga ay mas mababa kaysa sa rcond na doble sa pinakamalaking singular na elemento ng point_1, ito ay itinuturing na zero kapag tinutukoy ang ranggo.



Halaga ng Pagbabalik:

Bilang kapalit, nakukuha natin ang pinakamaliit na parisukat ng kilalang variable x sa equation na ax=b.

Halimbawa 1:

Simulan natin ang pagpapatupad ng aming unang halimbawa ng hindi bababa sa parisukat na paraan ng Python library, NumPy. Una, kailangan natin ng Python compiler para makapag-code tayo dito. Buksan ang compiler. Kailangan mo ring i-install ang NumPy library dahil gumagamit kami ng isa sa mga function ng NumPy na siyang lstsq() function. Pagkatapos, kailangan mong i-import ang NumPy package dito. Una, isulat ang keyword na 'import' na nagsasabi sa compiler na ii-import namin ang package. Pagkatapos, kailangan nating isulat ang pangalan ng package na ginagamit natin sa function na 'numpy'. At pagkatapos, isinusulat din namin ang kahaliling pangalan ng NumPy 'np' dahil maraming programmer ang gumagamit ng diskarteng ito. Ito ay isang mahusay na diskarte sa programming, at nakakatipid ito ng oras.

Pagkatapos mag-import ng package, sisimulan naming isulat ang aktwal na linya ng code na gusto naming gawin. Ini-print muna namin ang mga mensahe upang madaling maunawaan ng user kung ano ang ginagawa namin sa halimbawa gamit ang print() statement. Ginagawa namin ang isang-dimensional na array na 'A' gamit ang array() function at pagkatapos ay i-print ito sa pamamagitan ng pagtawag sa print() statement. Pagkatapos, gumawa kami ng isa pang one-dimensional na array na 'B' gamit ang array() function at i-print ito gamit ang print() function.

angkat numpy bilang hal.

print ( 'Pagpapatupad ng Least Square Method sa NumPy: ' )

A = hal. array ( [ 1 , dalawa , 1 , 1 , 1 , dalawa , dalawa , 1 , 1 ] )

print ( ' \n Ang Array A ay: ' , A )

B = hal. array ( [ 4 , 3 , 5 , 4 , dalawa , 3 , 6 , 3 , dalawa ] )

print ( ' \n Ang Array B ay: ' , B )

X = hal. linseed . lstsq ( hal. vstack ( [ A , hal. mga ( lamang ( A ) ) ] ) . T , B , rcond = wala ) [ 0 ]

print ( ' \n Ang Least Square ay: ' , X )

Matapos ang paglikha ng parehong mga punto A at B, ipinatupad namin ang lstsq() function. Ngunit una, ginagamit namin ang vstack() function upang i-stack ang mga elemento ng 'A', sequence-wise. Pagkatapos, kinukuha namin ang transpose ng array na 'A'. Pagkatapos, ipinapasa namin ang vstack() function bilang unang argumento ng lstsq() function. Ang pangalawang argumento ay ang 'B' array at ang ikatlong argumento ay 'rcond' kung saan itinakda namin ang halaga ng rcond bilang 'wala'. Pagkatapos, iniimbak namin ang buong function sa isa pang array na pinangalanang 'x' na nagpapakita na ito ay ang kilalang variable linear equation, ax=b. Pagkatapos nito, ipinapakita namin ang mga resulta upang gamitin namin ang print() na pahayag para dito at ipasa ang array na 'x' dito.

Halimbawa 2:

Ngayon, simulan natin ang pagpapatupad ng isa pang halimbawa ng NumPy least squares. Palagi kaming nag-i-import muna ng library na ginagamit namin sa program na NumPy. Una, isinulat namin ang keyword na 'import' upang makuha ang package sa programa. Sinusulat din namin ang pangalan ng package na 'numpy' at pagkatapos ay ang kanyang alias, 'np'. Pagkatapos, tinatawagan namin ang print() na paraan upang maipakita namin ang retable na mensahe ng pinakamaliit na mga parisukat para sa isang mas mahusay na pag-unawa sa user.

Pagkatapos, nilikha namin ang pangalan ng array na 'x_axis' at iniimbak ang array dito gamit ang function na arange(). Pagkatapos, i-print namin ito gamit ang print() na paraan. Pagkatapos, gumawa kami ng isa pang pangalan ng array na 'y_axis' at iniimbak ang array dito na aming ginawa sa sumusunod na paglalarawan.

Pagkatapos gumawa ng parehong array, ipinapatupad namin ang ones() na pamamaraan sa x_axis array at iniimbak ito sa isa pang array na pinangalanang 'array_a'. At pagkatapos, ipi-print din namin ang array na ito. Lumilikha kami ng isa pang array na pinangalanang 'arg_reg_line' at nagpapatupad ng function na linalg.lstsq() dito. Pagkatapos, ipinapasa namin ang mga parameter sa function na ito upang makuha namin ang pinakamaliit na mga parisukat sa pagitan ng dalawang array o puntos. Ang unang parameter ay ang pagkuha namin ng transpose ng array_a. Ang pangalawang parameter ay ang pangalawang punto na kung saan ay ang y_axis. Pagkatapos, mayroon kaming 'rcond' na naglalaman ng 'wala' na halaga. Pagkatapos ay ipinapakita namin ang array gamit ang print() na paraan.

angkat numpy bilang hal.

print ( 'Pagpapatupad ng linalg.lstsq() function: ' )

x_axis = hal. arange ( 0 , 10 )

print ( ' \n Ang Halaga ng x axis ay: ' , x_axis )

y_axis = [ 10.3 , 10.5 , labing-isa , 11.5 , 13.2 , 13.9 , 14 , 15.5 , 16.6 , 17 ]

print ( ' \n Ang Halaga ng y axis ay: ' , y_axis )

array_a = hal. array ( [ x_axis , hal. mga ( 10 ) ] )

print ( ' \n Ang Array ay: \n ' , array_a )

arg_reg_line = hal. linseed . lstsq ( array_a. T , y_axis , rcond = wala ) [ 0 ]

print ( ' \n Ang Mga Parameter ng Regrssion Line ay: ' , arg_reg_line )

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

angkat matplotlib. pyplot bilang plt

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

plt. balangkas ( x_axis , y_axis , 'O' )

plt. pamagat ( 'Linear Regression Line' )

plt. xlabel ( 'X-Axis' )

plt. ylabel ( 'Y-Axis' )

plt. palabas ( )

Narito ang output ng previoulsy-implemented na halimbawa:

Nag-import kami ng isa pang pakete ng NumPy na siyang 'matplotlib' na pakete na ginagamit upang i-plot ang graph. Pagkatapos, i-plot namin ang mga halaga ng x_axis at y_axis_values. Susunod, itinakda namin ang pamagat at mga label ng graph. Panghuli, ipinapakita namin ang graph gamit ang show() na paraan.

Narito ang nais na graph ng ibinigay na halimbawa:

Konklusyon

Sa artikulong ito, nalaman namin kung ano ang pinakamaliit na parisukat at kung paano namin makuha ang linalg.lstsq() ng hindi kilalang variable x gamit ang linear equation ax=b. Gumamit kami ng maraming function ng NumPy upang mahanap ang pinakamaliit na mga parisukat at nagpatupad ng ilang halimbawa na may mga detalyadong paliwanag para sa isang mas mahusay na pag-unawa sa gumagamit.