Scipy MinstSq

Scipy MinstSq
Scipy er et open source-bibliotek med Python som gir løsninger for matematiske og vitenskapelige problemer. Den er bygget på numpy, og utvider funksjonaliteten ved å tilby flere verktøy for matrike databehandling og spesialisert datastruktur.

Det brede spekteret av kommandoer på høyt nivå lar brukeren visualisere og transformere dataene. En av kommandoene eller funksjonene i Scipy Optimization Library er MinstSQ (). MinstSQ () -funksjonen bruker den minste firkantede minimeringsmetoden.

I denne artikkelen vil vi få deg til å lære om MinstSQ () -funksjonen; Dens syntaks, hvordan det fungerer, og vi vil gi noen nyttige eksempler som vil hjelpe deg å forstå hvordan du implementerer minste- () -funksjonen. Gå gjennom denne artikkelen hvis du er ny på konseptet Scipy MinstSq og vil lære om det.

Hva er syntaksen til MinstSq () -funksjonen?

MinstSQ () -funksjonen minimerer summen av kvadratet til et sett med ligninger. Det brukes til å løse et ikke-lineært minst firkantet problem. Scipy.MinstSq () har følgende syntaks:

# Scipy.optimalisere.MinstSq (F, X, Args = (), DF = ingen, fullOutput = 0, kaldere = 0, F-tol = 1.49012E-08, X-tol = 1.49012E-08, G-Tol = 0.0, Max-Fev = 0, EPS-FCN = ingen, FAC = 100, DIA = Ingen)

Parametrene til minste- () -funksjonen er beskrevet som følger: Parameteren 'F' er kallbar, den tar på seg 'n' vektorargumentet og returnerer 'm' flytende punktnummer. Det er viktig at 'm> = n' og det ikke skal returnere NANS.

'X' -parameteren spesifiserer utgangspunktet for minimering. Parameteren 'Args' er en tupleverdi som brukes til å plassere ethvert ekstra argument som trengs for funksjonen, og det er en valgfri parameter. 'DF' er en annen kallbar parameter som brukes til å beregne Jacobian of Function med derivater over radene. Det er også en valgfri parameter.

'FullOutput' er en valgfri parameter og returnerer alle valgfrie utganger. 'Colderive' er en valgfri boolparameter som spesifiserer den jakobiske funksjonen som beregner derivater nedover kolonnene. 'F-tol' er en valgfri float-parameter som brukes til å presentere den relative feilen som er ønsket i summen av firkanter.

'X-tol' er en annen valgfri floatparameter som brukes til å presentere den relative feilen som er ønsket i den omtrentlige løsningen. 'G-tol' er en valgfri parameter som brukes til å presentere ortogonaliteten mellom jakobiske kolonner og funksjonsvektorer i et flytende punktnummer. 'Max-Fev' spesifiserer det maksimale antallet samtaler til funksjonen; Imidlertid er det en valgfri parameter.

'EPS-FCN' spesifiserer den ønskelige trinnlengden for funksjonen fremover. 'FAC', en valgfri parameter, bestemmer det første trinnet, og til slutt fungerer den siste valgfrie parameteren 'Dia' som en skalafaktor for variablene.

Nedenfor vil vi utdype bruken av minste- () -funksjonen ved hjelp av enkle og enkle eksempler.

Eksempel 1:

Vi starter med et veldig enkelt og grunnleggende eksempel slik at du ikke blir forvirret i begynnelsen og slutter å lese videre. Dette er det enkle programmet som vil hjelpe deg med å forstå funksjonaliteten til minste- () -metoden.

La oss se koden nedenfor. Merk at koden blir utført i samarbeidet. Samarbeidet er en åpen kildekode Python-tolk som brukes til å implementere og utføre Python-programmer. Det er et gratis verktøy og åpent tilgjengelig fra Google Repository. Du kan enkelt laste ned .PY Extension -fil etter implementering og utførelse.

Fra scipy.Optimaliser Import MinstSq
def func_one (ABC):
Return 33*(ABC-2) ** 1+3
Print (MinstSq (Func_one, 0))

La oss se utdataene nedenfor:

Eksempel 2:

I dette eksemplet vil vi presentere Jacobian for feilfunksjonen ved å bruke algopifunksjonen for å forklare bruken av minste- () -funksjonen. Her kan du se at bibliotekene først importeres som er viktige for utførelsen av koden.

Deretter har vi opprettet NP -matriser som er angitt som 'y_data' og 'val'. Etter det har vi definert tre funksjoner og gitt de nødvendige verdiene til dem. Og til slutt vises de estimerte verdiene og det totale antallet samtaler som blir foretatt av funksjonen som du kan se i de endelige linjene i kodeprogrammet.

Importer numpy som NP
fra Scipy Import Optimize
Importer algopi som alg
y_data = np.Array ([0.2387, 0.1214, -0.0321, 0.2456, 0.6453, 0.4578, 0.2214, 0.2814, 0.2774, 0.5671, 0.4454, 0.6743, 0.1109, 0.1543, 0.0203, 0.1286, 0, 0, 0])
val = np.Array ([58., 78, 109, 118, 129, 141, 165, 176, 178, 265, 246, 265, 272, 288, 299, 301, 344, 356, 332])
def func (p, val):
Retur P [0] + (P [1] -P [0]) * ((1/(1 + Alg.EXP (-P [2]*(val-p [3])))) + (1/(1 + alg.exp (p [4]*(val -p [5]))) -1)
def error_func (p, val, y):
Return func (p, val) -y
def jac_error_func (p, val, y):
ap = alg.Utpm.init_jacobian (p)
Returner Alg.Utpm.EXTRACT_JACOBIAN (error_func (ap, val, y))
Gjett = NP.Array ([0, Max (Y_Data), 0.1, 120, -0.1, 250])
P2, C, Info, MSG, suksess = optimalisere.minsteSQ (error_func, gjetning, args = (val, y_data), dfun = jac_error_func, full_output = 1)
Print ('Estimering av minste- () -funksjonen er:', P2, suksess)
Print ('Totalt antall samtaler etter funksjonen er:', Info ['NFEV'])

Når du kjører den gitte koden, vil du se følgende utdata.

Eksempel 3:

Grunnbruken av minimeringsfunksjonen minimersq () er kurvebeslag. Dette er poenget der en parametrisert modellteknikk brukes til å justere de numeriske verdiene.

I det følgende eksemplet vil vi vise hvordan du modellerer kurven for montering av data og kontrollerer forskjellene i montering. Vi bruker to ligninger for å definere to typer funksjoner for å passe. Ligningene kan endres, så hvis du vil bruke ligningene dine, er det bare å erstatte den gitte ligningen med ligningene dine, så er du god til å gå.

På denne måten kan du bedre forstå og observere passende forskjell. Se den gitte koden nedenfor:

Fra scipy.Optimaliser Import MinstSq
Importer matplotlib.Pyplot som MTB
One = Array ([6, 8, 11, 4, 2, 3, 6, 8, 5, 7,8, 11, 14])
To = matrise (rekkevidde (len (en)))
def func_one (param, en, to):
ABC, XYZ, ABZ = Param [0], Param [1], Aram [2]
utgang = to-lab • en •• 2+xyz • en+abzi
Returutgang
def func_two (param, en, to):
ABC, XYZ, ABZ = Param [0], Param [1], Param [2]
output = to- (abc*en ** 3+xyz*en+abz)
Returutgang
param = [0, 0, 0]
output_two = minstsq (func one, param, (en, to))
ABC, XYZ, ABZ = output_two [0] [0], output_two [0] [1], output_two [0] [2]
yfit1 = abc*en ** 2+xyz*en+abz
output_two = minstsq (func_two, param, (en, to)) abc, xyz, abz = output_two [0] [0], output_two [0] [1], output_two [0] [2]
yfit2 = abc*en ** 3+to*en+abz
MTB.plot (en, to, 'bo', label = "y-originat")
MTB.plot (en, yfitl, color = "svart", label = "y = ox^24-bx+c")
MTB.plot (en, yfit2, color = "rød", label = "y = ox^24-b+c")
MTB.xlabel ('x')
MTB.ylabel ('y')
MTB.Legend (loc = 'best', fancybox = true, skygge = sant)
MTB.rutenett (sant)
MTB.forestilling()

Utgangen til ovennevnte er gitt nedenfor:

Konklusjon

I denne artikkelen har vi presentert detaljer om minstsq () -funksjonen til Scipy. Vi har sett syntaksen til MinstSq () med forklaringen av hver nødvendig og valgfri parameter i detalj. MinstSQ () -funksjonen tar 12 parametere hvorav 2 er obligatoriske parametere og de resterende 10 er valgfrie parametere.

Videre er hvordan du bruker minste- () -funksjonen også nevnt med eksempler. Det første eksemplet er veldig enkelt og grunnleggende og forklarer den grunnleggende bruken av funksjonen, mens de to andre eksemplene forklarer den komplekse funksjonaliteten til minste- () -funksjonen.